PSO(粒子群算法)MATLAB仿真完整代码

拼搏现实的明天。 2022-05-24 05:13 396阅读 0赞
  1. %程序1PSO.m文件
  2. %------ 基本粒子群优化算法( Particle Swarm Optimization -----------
  3. %------ 功能:求解无约束问题
  4. %------ 调用格式:[xm,fv] =PSO(fitness,N,c1,c2,w,M,D)
  5. function [xm,fv] =PSO(fitness,N,c1,c2,w,M,D)
  6. %fitness:待优化的目标函数
  7. %N:粒子数目
  8. %c1:学习因子1
  9. %c2:学习因子2
  10. %w:惯性权重
  11. %M:最大迭代次数
  12. %D:自变量个数
  13. %xm:目标函数取最小值时的自变量值
  14. %fv:目标函数最小值
  15. %--------------- 1)随机初始化各微粒的位置和速度------------------------
  16. format long;
  17. for i = 1:N %粒子数目
  18. for j = 1:D %自变量个数
  19. x(i,j)=randn;
  20. v(i,j)=randn;
  21. end
  22. end
  23. %------ 2)计算各个粒子的适应度,并初始化 pi pg----------------------
  24. for i=1:N
  25. p(i)=fitness(x(i,:)); %pi为个体历史最优值
  26. y(i,:)=x(i,:);
  27. end
  28. pg =x(N,:);
  29. for i = 1:(N-1)
  30. if fitness(x(i,:))<fitness(pg)%pg为全局最优值
  31. pg =x(i,:);
  32. end
  33. end
  34. %------------------(3)更新粒子的速度和位移 ---------------------------------
  35. for t=1:M %(6)迭代次数,作为停止条件
  36. for i = 1:N
  37. v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
  38. x(i,:)=x(i,:)+v(i,:);
  39. %-------------------------(4)找历史最优值------------------------------------
  40. if fitness(x(i,:))<p(i)
  41. p(i)=fitness(x(i,:));
  42. y(i,:)=x(i,:);
  43. end
  44. %-----------------------(5)找全局最优值-------------------------------------
  45. if p(i)<fitness(pg)
  46. pg = y(i,:);
  47. end
  48. end
  49. pbest(t)=fitness(pg);
  50. end
  51. xm = pg';
  52. fv = fitness(pg);
  53. %目标函数文件fitness.m文件
  54. function F = fitness(x)
  55. F = 0;
  56. for i= 1:30
  57. F =x(i)^2;
  58. end

发表评论

表情:
评论列表 (有 0 条评论,396人围观)

还没有评论,来说两句吧...

相关阅读

    相关 粒子算法PSO

    1.粒子群算法概述 粒子群算法属于群智能算法的一种,使用过模拟鸟群捕食行为设计的。假设区域里只有一块食物(即通常优化问题的最优解)鸟群的任务是找到这个任务源。鸟群在整个搜寻