%HDE+SPX+archive
function [vp,result,count,record]=evolve1(pop,NP)
global bound lk NN maxfe%lk为变量个数,bound为边界矩阵
count=0;%记录进化过的代数
vp=ones(NP,1);
record=zeros(maxfe,2);
record(:,1)=1:maxfe;
gen=1;
blogo=0;
Afactor = 1;
archive.NP = ceil(Afactor * NP); % the maximum size of the archive
archive.pop = zeros(0, lk); % the solutions stored in te archive
SL=zeros(NP,1);
%---------------------------
F=0.5;
CR=0.9;
%---------------------------
for i=1:NP
count=count+1;
vp(i)=fun(pop(i,:));
record(count,2)=min(vp(1:i));
end
for c=gen:NN-1
%--------------------------------PCX搜索---------------------
for i=1:1%搜索次数
[v1,r1]=min(vp);
while 1
r2=max(1,ceil(rand*NP));
r3=max(1,ceil(rand*NP));
if r2~=r3&&r1~=r3&&r1~=r2
break
end
end
x1=pop(r1,:);x2=pop(r2,:);x3=pop(r3,:);
Y=SPX(x1,x2,x3);
count=count+1;
vy=fun(Y);
if vy<v1
vp(r1)=vy;
pop(r1,:)=Y;
end
record(count,2)=min(vp);
end
%---------------------------------------------------------------
pop1=pop;
vp1=vp;
popall=[pop;archive.pop];
for j=1:NP
while 1
r=[max(1,ceil(NP*rand)),max(1,ceil(NP*rand)),max(1,ceil(size(popall,1)*rand))];
if length(r)==length(unique(r))
break
end
end
temp=pop(r(1),:)+F*(pop(r(2),:)-popall(r(3),:));
child=pop(j,:);
rj=max(1,ceil(lk*rand));
for jj=1:lk
if rand<=CR||jj==rj
child(jj)=temp(jj);
end
end
%---------------------------边界处理--------------
for jj=1:lk
while child(jj)<bound(jj,1)||child(jj)>bound(jj,2);
if child(jj)<bound(jj,1)
child(jj)=2*bound(jj,1)-child(jj);
end
if child(jj)>bound(jj,2)
child(jj)=2*bound(jj,2)-child(jj);
end
end
end
% for jj=1:lk
% if child(jj)<bound(jj,1)
% child(jj)=bound(jj,1);
% end
% if child(jj)>bound(jj,2)
% child(jj)=bound(jj,2);
% end
% end
% for jj=1:lk
% if child(jj)<bound(jj,1)||child(jj)>bound(jj,2);
% child(jj)=bound(jj,1)+rand*(bound(jj,2)-bound(jj,1));
% end
% end
%-------------------------------------------------------
count=count+1;
vc=fun(child);
if vc<vp(j)
pop1(j,:)=child;
vp1(j)=vc;
SL(j)=1;
else
SL(j)=0;
end
record(count,2)=min(vp1);
if count>=maxfe
blogo=1;
break
end
end
archive = updateArchive(archive, pop(SL==1, :));
pop=pop1;
vp=vp1;
gen=gen+1;
if blogo==1
break
end
end
%----------------------------退出,将种群排序并保存-------
[vp,I]=sort(vp);
result=pop(I,:);
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的运用差分进化算法实现一维线阵方向图优化,还包含了带有单纯形算法局部搜索的混合算法程序+使用说明文档.zip
共11个文件
m:9个
mat:1个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 136 浏览量
2024-05-22
18:04:42
上传
评论
收藏 57KB ZIP 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的运用差分进化算法实现一维线阵方向图优化,还包含了带有单纯形算法局部搜索的混合算法程序+使用说明文档.zip 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的运用差分进化算法实现一维线阵方向图优化,还包含了带有单纯形算法局部搜索的混合算法程序+使用说明文档.zip (11个子文件)
phase only
evolve3.m 2KB
updateArchive.m 887B
vtrpost.m 1014B
SPX.m 203B
evolve2.m 2KB
evolve1.m 3KB
HDDE.m 1KB
result.mat 192KB
fun.m 741B
post1.m 930B
使用说明文档.md 13KB
共 11 条
- 1
资源评论
IT狂飙
- 粉丝: 4779
- 资源: 2658
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功