| 查看: 1772 | 回复: 6 | ||
离子木木金虫 (正式写手)
|
[求助]
以信噪比为适应度函数的自适应粒子群优化算法Matlab Code 修改 已有1人参与
|
|
本人最近写了一篇以信噪比为适应度函数的自适应粒子群优化算法Matlab Code,但是运行总是出错误,恳求哪位Matlab大神帮忙看看 修改修改,谢谢。 信噪比SNR适应度函数: function SNR=fitness(x) N=20000; fs=20; h=1/fs; T=(0:N-1)*h; AL=0.1; fL=0.01; u=AL*sin(2*pi*fL.*T); D=0.5; %噪声强度 ff=fs*(0:N/100-1)/N; sz=sqrt(2*D).*randn(1,N); %产生的白噪声序列 s=u+sz; %信号 xx(1,:)=sr(x(1),x(2),h,s); Yf=fft(xx(1,:)); P=Yf.*conj(Yf)/N; %功率谱 G=sum(P); H=P(11); GG=(G-H)/10; SNR=10*log(H/GG)/log(10); %以SNR作为适应度函数 非线性微分方程离散并求解的数值算法: function x=sr(a,b,h,x1) x=zeros(1,length(x1)); for i=1:length(x1)-1 k1=h*(x(1)*x(i)-x(2)*x(i).^3+x1(i)); k2=h*(x(1)*(x(i)+k1/2)-x(2)*(x(i)+k1/2).^3+x1(i)); k3=h*(x(1)*(x(i)+k2/2)-x(2)*(x(i)+(sqrt(2)-1)*k1/2+(2-sqrt(2))*k2/2).^3+x1(i+1)); k4=h*(x(1)*(x(i)+k3)-x(2)*(x(i)-sqrt(2)*k2/2+(2+sqrt(2))*k3/2).^3+x1(i+1)); x(i+1)=x(i)+(1/6)*(k1+(2-sqrt(2))*k2+(2+sqrt(2))*k3+k4); end 主函数: clear all; clc; format long; %------给定初始化条件------------------- c1=2; %学习因子1 c2=2; %学习因子2 wmax=0.9; %惯性权重 wmin=0.6; %惯性权重 MaxDT=100; %最大迭代次数 D=2; %搜索空间维数(未知数个数) N=40; %初始化群体个体数目 eps=10^(-6); %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)------------ for i=1:N for j=1:D x(i,j)=rand(1); %随机初始化位置 v(i,j)=rand(1); %随机初始化速度 end end for i=1:N p(i)=fitness(x(i,:)); y(i,:)=x(i,:); end pg=x(1,:); %Pg为全局最优 for i=2:N if fitness(x(i,:))<fitness(pg) pg=x(i,:); end end for t=1:MaxDT for j=1:N fv(j)=fitness(x(j,:)); end fvag=sum(fv)/N; fmin=min(fv); for i=1:N if fv(i)<=fvag w=wmin-(fv(i)-fmin)*(wmax-wmin)/(fvag-fmin); else w=wmax; end v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:)); %实现速度的更新 x(i,:)=x(i,:)+v(i,:); %实现位置的更新 if x(i,1)>1||x(i,1)<0 x(i,1)=rand(1); end if x(i,2)>1||x(i,2)<0 x(i,2)=rand(1); end if fitness(x(i,:))<p(i) %判断当此时的位置是否为最优的情况,当不满足时继续更新 p(i)=fitness(x(i,:)); y(i,:)=x(i,:); end if p(i)<fitness(pg) pg=y(i,:); end end Pbest(t)=fitness(pg); end %------最后从所得到的结果中取出最优的解 disp('*************************************************************') disp('函数的全局最优位置为:') Solution=pg' disp('最后得到的优化极值为:') Result=fitness(pg) disp('*************************************************************') figure(1) r=[1:1:100]; plot(r,Pbest,'r--','linewidth',1); xlabel('迭代次数') ylabel('适应度值') title('自适应权重PSO算法') hold on Solution=pg' Result=fitness(pg) figure(2) plot(x,'DisplayName','x') axis([0,40,-5,5]) %------算法结束---DreamSun GL & HF,适应度函数源程序(fitness.m)------------ |
» 猜你喜欢
求流动传热博导
已经有0人回复
溶胶凝胶制备玻璃粉工艺
已经有0人回复
金属材料论文润色/翻译怎么收费?
已经有172人回复
犹他大学机械工程 Tianli Feng课题组博士生招生
已经有0人回复
2026英国女王大学机械学院电池储能CSC全奖博士招聘
已经有10人回复
2026英国女王大学机械学院电池储能CSC全奖博士招聘
已经有1人回复
华南农业大学蒋恩臣教授、许细薇教授团队招聘生物质领域博士、硕士
已经有2人回复
仅有一篇一作相关文章,其余的都是通讯,好申请面上么?
已经有6人回复
water research重复率要求
已经有3人回复
华中科技大学 煤燃烧全重 紧急招博士生报考 (1月19日截止)
已经有20人回复

2楼2016-07-28 19:36:22
离子木木
金虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 637.5
- 散金: 20
- 帖子: 331
- 在线: 24小时
- 虫号: 4551087
- 注册: 2016-03-29
- 性别: GG
- 专业: 制造系统与自动化

3楼2016-07-29 14:05:10
一方水土
木虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 2488.7
- 散金: 26
- 红花: 1
- 帖子: 127
- 在线: 55小时
- 虫号: 2086516
- 注册: 2012-10-25
- 专业: 电路与系统

4楼2016-11-01 10:04:15
一方水土
木虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 2488.7
- 散金: 26
- 红花: 1
- 帖子: 127
- 在线: 55小时
- 虫号: 2086516
- 注册: 2012-10-25
- 专业: 电路与系统

5楼2016-11-01 10:07:17
6楼2017-11-03 00:56:19
7楼2017-11-28 20:46:22











回复此楼
