1. pso算法的不足:

容易陷入局部最优、算法后期容易出现振荡现象。

2. 改进目的

通过引入模拟退火机制,将pso算法中的“自身认知”和“社会认知”部分进行自适应调整,以改善算法的性能,从而实现算法的全局收敛和局部收敛的有效平衡。


  • 前期:标准PSO算法寻优。

    • 提高了算法搜索整个过程的速率

    • 为后期进行了随机初始化的工作,增加了种群的多样性

  • 后期:引入模拟退火原理。

    • 增强了粒子群的全局搜索能力,很大程度上解决了pso算法的局部收敛性。

3. 改进步骤[1]

4. 源代码

m = 30;  %粒子数量
d = 2;  %粒子维度
ac1 = 2.0;  % 自身认知函数初始值
ac2 = 0.5;
sa_k = 0.98;  %衰减因子
iwe = 3;  % 惯性权重调整步数
iter_max = 200;w_max = 0.8;
w_min = 0.4;
v_max = 1;
v_min = -1;
x_max = 5;
x_min = -5;
t_star = 100;
t_end = 0.01;pos = 0 ;%% 1、初始化
x = rand(m,d) * (x_max - x_min) + x_min;
v = rand(m,d) * (v_max - v_min) + v_min;%% 初始化个体最优位置,最优值
p = x;  %每个粒子的个体最优解的位置
pbest = ones(m,1);
for i =1:mpbest(i) = func(x(i,:));
end%% 初始化全局最优位置,最优值
g = ones(1,d);  %全局最优位置
gbest = inf;
for i=1:mif(pbest(i) < gbest)g = p(i,:)gbest = pbest(i);end
end% 迭代
t_cur = t_star;
c1 = 1.5;
c2 = 1.5;
for i = 1:iter_maxfor j = 1:m%% 2、计算每个粒子的个体最优值if i * 2 < iter_max   % 迭代前期采取标准的学习因子更新速度if (func(x(j,:)) < pbest(j))p(j,:) = x(j,:);  %更新个体最优解位置pbest(j) = func(x(j,:));  %更新个体最优解endelse  % 迭代后期deta_p = func(x(j,:)) - pbest(j);if (deta_p < 0)p(j,:) = x(j,:);  %更新个体最优解位置pbest(j) = func(x(j,:));  %更新个体最优解else  %(Metropolis算法)p1 = exp(-1 * deta_p / t_cur);r = 0;for ii = 1:10r = max(r,rand);endif p1 > r  % 接受较差的值p(j,:) = x(j,:);  %更新个体最优解位置pbest(j) = func(x(j,:));  %更新个体最优解c1 = ac1 * exp(-t_cur/t_star)*rand;%c2 = ac2 * (1+exp(-t_cur/t_star))*rand;endendend%% 3、计算整个群体的全局最优值if (pbest(j) < gbest)gbest0 = gbest;g = p(j,:);gbest = pbest(j);end%% 4、对粒子的速度、位置进行进化%w = w_max + (w_max - w_min) *(i-1)/(iwe-1);w = w_max - (w_max - w_min) * i / iter_max;v(j,:) = w*v(j,:)+c1 * rand*(p(j,:)-x(j,:))+c2 * rand*(g-x(j,:));x(j,:) = x(j,:) + v(j,:);%% 5、进行边界处理for k = 1:dif (v(j,k) > v_max | v(j,k) < v_min)v(j,k) = rand * (v_max - v_min) + v_min;endif (x(j,k) > x_max | x(j,k) < x_min)x(j,k) = rand * (x_max - x_min) + x_min;endendendgb(i) = gbest;t_cur = sa_k * t_cur;
end%g;  %最优个体位置
disp( '最小值为:');
gbest
plot(gb)
legend(legend_str);
xlabel('迭代次数');
ylabel('适应度值');
title("适应度进化曲线")function results = func(x)results = 5*cos(x(1)*x(2))+x(1)*x(2)+x(2)^3;
end

5.对比结果

6. 参考文献

[1]于海平, 刘会超, and 吴志健. "基于模拟退火的自适应粒子群优化算法的改进策略." 计算机应用研究 29.12(2012):3.

自适应模拟退火粒子群算法BSAPSO(学习笔记_03)相关推荐

  1. 【优化求解】基于自适应模拟退火粒子群优化算法求解单目标优化问题matlab代码

    1 简介 针对PSO算法在求解问题的优化问题中易陷入局部收敛且收敛速度较慢等缺陷,引入一种初始化改进策略,并将模拟退火算法与PSO算法相结合,提出了一种全新的算法.该算法将寻优过程分为两个阶段:为了提 ...

  2. 优化算法(粒子群算法)

    基本概念 粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation).源于对鸟群捕食的行为研究.粒子群优化 ...

  3. 【优化选址】基于模拟退火结合粒子群算法求解分布式电源定容选址问题matlab源码

    1 算法介绍 1.1 模拟退火算法 1.2 粒子群算法 粒子群算法同遗传算法相似,也是根据生物界中的种群行为而发明的一种算法.也是解决优化问题常用的一种算法.其原理简单,实现起来也不复杂,并且经过自己 ...

  4. 基于粒子群算法的神经网络非线性函数拟合

    基于粒子群算法的神经网络非线性函数拟合 文章初心 最近在学机器学习,自己的方向是智能算法,课程报告需要,于是试着把机器学习和粒子群算法相结合,写出来供大家参考,交流. 文末有这部分内容相关的代码,已开 ...

  5. matlab中fic算法,粒子群算法在函数优化问题中的应用最终版(全文完整版)

    <粒子群算法在函数优化问题中的应用.doc>由会员分享,可免费在线阅读全文,更多与<粒子群算法在函数优化问题中的应用(最终版)>相关文档资源请在帮帮文库(www.woc88.c ...

  6. 【三维装箱】基于粒子群算法求解三维装箱问题matlab源码

    1 简介 针对约束条件下三维装箱问题复杂性,为提高装箱利用率,本文提出 了混合粒子群算法,该算法采用BF启发式算法配合改进的自适应权重粒子群算法实现.通过仿真试验,结果表明该混合粒子群算法对解决部分约 ...

  7. 基于多目标粒子群算法在分布式电源选址和定容中的应用matlab程序

    基于多目标粒子群算法在分布式电源选址和定容中的应用matlab程序 摘 要: 为更好地解决分布式电源选址定容问题,提出一种改进的多目标粒子群算法.考虑投资成本.网损以及电压稳定性三因素建立了一个三目标 ...

  8. PSO粒子群算法的matlab实践【PSO学习笔记_02】

    在PSO粒子群算法[PSO学习笔记_01]_L1234X的博客-CSDN博客中,主要以介绍PSO算法的个人理解,以理论为主,本文将在此基础上进行实践. 目录 例题 对应函数图像用matlab画出为: ...

  9. 学习笔记|PSO粒子群算法(1)

    粒子群算法 源于对鸟群捕食行为的研究,每只鸟之间通过集体的协作使群体达到最优目的,使一种基于Swarm Intelligence的优化算法,关键点在于处理"社会行为"和" ...

最新文章

  1. 拆解交易系统--如何做好稳定性
  2. matplotlb添加中文字体
  3. 江西理工大学计算机管理技术期末复习(wangzhendong)网络管理与维护
  4. html字体垂直间隔,html实现文字垂直居中且设置间隔
  5. mybatis动态查询列名,#与¥
  6. 编写第一个 .NET 微服务
  7. WPF中的数据绑定Data Binding使用小结
  8. vue实战案例:用学过的知识做一个小demo
  9. java select 不是date,iPhonedateselect器,而不是键盘?
  10. 格式化js/html代码的好工具
  11. Google 为中国开发者都带来了什么?
  12. SHELL中,如何分割字符串
  13. java面向对象三个关键字_Java_面向对象_this关键字
  14. 【转】PLI是什么以及怎么用
  15. 管理Linux软件包和进程
  16. EXCEL表格-利用随机函数制作抽签工具(RAND)
  17. C语言程序设计实验报告——实验四
  18. 【OpenGL】高级片段着色器——高斯模糊和索贝尔边缘检测
  19. 个人邮箱怎么注册?手机怎么注册个人邮箱呢?
  20. 大规模线性方程组求解

热门文章

  1. 安全准入考试(配电专业一般工作人员)安规题库(含答案)
  2. 恐怖的计算机病毒,电脑上突然出现恐怖病毒,有没有吓到你
  3. canvas制作旋转的太极图
  4. python PIL 图片素描化
  5. AntV-G6:画自动连线流程图
  6. centos7建站操作步骤
  7. 【渝粤题库】广东开放大学 管理学原理 形成性考核
  8. 红酒的色香味怎么产生的
  9. Cisdem Video Converter视频转换器全新功能
  10. 云服务器可以用来做什么?云服务器有什么用途?