function [tr,bj,bm,n] = SACPMDE(VTR,XVmin,XVmax,D,NP,fname)
% 参数自适应差分进化算法,对Rastrigrin函数起作用
% aa 当前计算到第几次
% VTR 优化的目标值
% fname 选择测试函数
% XVmin 搜索空间下限
% XVmax 搜索空间上限
itermax = 8000; % maximum number of iterations (generations)
F = 0.6; % DE-stepsize F from interval [0, 2]
F1=0.45;
CR = 0.9; % crossover probability constant from interval [0, 1]
%-----DE Initialize--------------------------------------------------------
pop = zeros(NP,D); % initialize pop
for i = 1:NP
pop(i,:) = XVmin + rand(1,D).*(XVmax - XVmin);
end
popold = zeros(size(pop));% toggle population
val = zeros(1,NP); % create and reset the "cost array"
bestmem = zeros(1,D); % best population member ever
bestmemit = zeros(1,D); % best population member in iteration
for i = 1:NP % Evaluate the best member after initialization
input = pop(i,:);
output(i) = feval(fname,input);
end
val = output';
[bestvalit,idx] = min(val);
bestmemit = pop(idx,:); % best member of current iteration
bestmem = bestmemit; % best member ever
bestval = bestvalit; % best value ever
%-----DE Iteration---------------------------------------------------------
tr = zeros(1,itermax);
for j = 1:itermax
if (bestval-VTR) < 1e-5
break
end
popold = pop;
% generate the trail population
for i = 1:NP
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CR=0.1;
if val(i)<=mean(val)
CR=0.1+(0.6-0.1)*(val(i)-max(val))/(min(val)-max(val));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% pick up the donor and differential vectors
rd = fix(rand(1) * NP + 1);
while val(rd) > val(i)
rd = fix(rand(1) * NP + 1);
end
rb = fix(rand(1) * NP + 1);
while rb == i || rb == rd
rb = fix(rand(1) * NP + 1);
end
rc = fix(rand(1) * NP + 1);
while rc == i || rc == rd || rc==rb
rc = fix(rand(1) * NP + 1);
end
re = fix(rand(1) * NP + 1);
while re == i || re == rd || re==rb || re==rc
re = fix(rand(1) * NP + 1);
end
% bulid a trial vector and crossover
jr = fix(rand(1) * D + 1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 找基变量
tb=rd;
if val(rb,:)<=min(val(rd,:),val(rc,:))
tb=rb;
end
if val(rc,:)<=min(val(rd,:),val(rb,:))
tb=rc;
end
% 找另两个差分向量;
tm=rd;
if val(rb,:)>=min(val(rd,:),val(rc,:)) && val(rb,:)<=max(val(rd,:),val(rc,:))
tm=rb;
end
if val(rc,:)>=min(val(rd,:),val(rb,:)) && val(rc,:)<=max(val(rd,:),val(rb,:))
tm=rc;
end
% 找最差的向量
tw=rd;
if val(rb,:)>=max(val(rd,:),val(rc,:))
tw=rb;
end
if val(rc,:)>=max(val(rd,:),val(rb,:))
tw=rc;
end
% 自适应缩放因子
F=0.1+0.8*(val(tm)-val(tb))/(val(tw)-val(tb));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k = 1:D
if rand(1)<=CR || k==jr
diff = F * (popold(tm,k) - popold(tw,k));
pop(i,k) = popold(tb,k) + diff;
else
pop(i,k) = popold(i,k);
end
end
for k = 1:D
if pop(i,k) > XVmax(k)
pop(i,k) = XVmax(k);
end
if pop(i,k) < XVmin(k)
pop(i,k) = XVmin(k);
end
end
end
% select trial vector
for i = 1:NP
input = pop(i,:);
output = feval(fname,input);
if output < val(i)
val(i) = output;
else
pop(i,:) = popold(i,:);
end
end
% find the best parameter vector and the best objective function
[bestvalit,idx] = min(val);
bestmemit = pop(idx,:);
if bestvalit < bestval
bestval = bestvalit;
bestmem = bestmemit;
end
tr(j) = bestval;
if abs(tr(j)) < VTR
break
end
bestval
tr(j)=bestval;
end
bj=bestval;
bm=bestmem;
n=j;
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的差分进化算法变形 参数自适应差分进化算法 +使用说明文档.rar
共2个文件
md:1个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 61 浏览量
2024-05-22
17:32:10
上传
评论
收藏 6KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的差分进化算法变形 参数自适应差分进化算法 +使用说明文档.rar 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实现的差分进化算法变形——参数自适应差分进化算法 +使用说明文档.rar (2个子文件)
使用说明文档.md 13KB
SACPMDE.m 4KB
共 2 条
- 1
资源评论
IT狂飙
- 粉丝: 4778
- 资源: 2640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功