• 离散粒子群算法(DPSO)求解路径规划(Matlab代码实现)


    💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
    🎉作者研究:🏅🏅🏅本科计算机专业,研究生电气学硕主要研究方向是电力系统和智能算法、机器学习和深度学习。目前熟悉python网页爬虫、机器学习、群智能算法、深度学习的相关内容。希望将计算机和电网有效结合!⭐️⭐️⭐️
    🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者,博主专门做了一个专栏目录,整个专栏只放了一篇文章,足见我对其重视程度:博主专栏目录。做到极度细致,方便大家进行学习!亲民!!!还有我开了一个专栏给女朋友的,很浪漫的喔,代码学累的时候去瞧一瞧,看一看:女朋友的浪漫邂逅。有问题可以私密博主,博主看到会在第一时间回复。
    📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文,算法,机器学习和人工智能学习。
    🚀支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!

                              

                                        🎉🎉欢迎您的到来🎉🎉

                         ⛅⛅⛅ 📃个人主页:电力系统科研室🌈🌈🌈

                        📚📚📚📋专栏目录:电力系统与算法之美👨‍💻👨‍💻👨‍💻

                                

    👨‍🎓博主课外兴趣:中西方哲学,送予读者:

    👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。在我这个专栏记录我有空时的一些哲学思考和科研笔记:科研和哲思。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“真理”上的尘埃吧。

         或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

    📋📋📋本文目录如下:⛳️⛳️⛳️

    目录

    1 离散粒子群算法

    2 Matlab代码实现

    3 写在最后

     

    离散粒子群算法

    普通粒子群算法(Particle Swarm Optimization Algorithm,PSO)的粒子初始位置、更新速度都是连续函数,与之对应,位置和速度更新均为离散值的算法是离散PSO算法(Discrete Particle Swarm Optimization Algorithm, DPSO);

    一般就是在跟新粒子位置后,对粒子进行离散点处理;

    比如:你的粒子的离散点是0到9的整数。那么对每个粒子更新位置后,比如是在(0,1)范围内的随机数。那么就(0,0.1)范围令其值为0;(0.1,0.2)范围令其值为1;............(0.9.1)范围令其值为9。当然初始位置值也需要这样处理.

    2 Matlab代码实现

    本文仅展现部分代码,全部代码见:🍞正在为您运送作品详情

    1. function main()
    2. %% 初始化城市位置向量
    3. city_nums=5;
    4. %% 初始化微粒群参数
    5. particle_nums=100;
    6. %% 最大进化代数
    7. max_iter=100;
    8. %% 速度位置更新方式 v=(c1max-i/itermax*(c1max-c1min))*v+c2(Pbest-Pi)+c3(Pgbest-Pi);
    9. %% 速度由N*N的矩阵来表示;
    10. %% 微粒个数为particle_nums;
    11. %% position_Matrix(1:city_nums):当前微粒路径
    12. %% position_Matrix(city_nums+1):当前微粒适应度值
    13. %% position_Matrix(city_nums+2:2*city_nums+1):个体最优路径
    14. %% position_Matrix(2*city_nums+2):个体最优适应度值
    15. city_position_x_max=10;city_position_y_max=10;city_position=rand(city_nums,2);
    16. city_position(:,1)=city_position(:,1)*city_position_x_max;
    17. city_position(:,2)=city_position(:,2)*city_position_y_max;
    18. %% 初始化城市距离矩阵
    19. city_distance=zeros(city_nums,city_nums);
    20. for i=1:city_nums
    21. for j=1:i
    22. city_distance(i,j)=sqrt((city_position(i,1)-city_position(j,1)).^2+(city_position(i,1)-city_position(j,1)).^2);
    23. city_distance(j,i)=city_distance(i,j);
    24. end
    25. end
    26. position_Matrix=zeros(2*city_nums+2,particle_nums);
    27. speed_current_Matrix=zeros(city_nums,city_nums,particle_nums);
    28. c_x=0.5;c_1_min=0.0;c_1_max=1;c_2=0.4;c_3=0.2;
    29. %% 初始化微粒的速度和位置
    30. for i=1:particle_nums
    31. position_Matrix(1:city_nums,i)=wGenerate(city_nums);
    32. position_Matrix(city_nums+1,i)=calFitness(position_Matrix(1:city_nums,i),city_distance);
    33. position_Matrix(city_nums+2:2*city_nums+1,i)=position_Matrix(1:city_nums,i);
    34. position_Matrix(2*city_nums+2,i)=position_Matrix(city_nums+1,i);
    35. st_Matrix=ones(city_nums).*c_x-eye(city_nums)>rand(city_nums);
    36. speed_current_Matrix(:,:,i)=(st_Matrix+st_Matrix')>ones(city_nums);
    37. end
    38. [globalBestFitness,thisIndex]=min(position_Matrix(2*city_nums+2,:),[],2);
    39. globalBestPath=position_Matrix(city_nums+2:2*city_nums+1,thisIndex);
    40. pathPlot(globalBestPath,city_position)
    41. title(num2str(globalBestFitness));
    42. %% 迭代过程
    43. for iter=1:max_iter
    44. for i=1:particle_nums
    45. PbestLinkM=linkM(position_Matrix(city_nums+2:2*city_nums+1,i));
    46. PgbestLinkM=linkM(globalBestPath);
    47. v_1_M=PM2VM(speed_current_Matrix(:,:,i),c_1_max-i./max_iter*(c_1_max-c_1_min));
    48. v_2_M=PM2VM(sub_M(PbestLinkM,speed_current_Matrix(:,:,i)),c_2);
    49. v_3_M=PM2VM(sub_M(PgbestLinkM,speed_current_Matrix(:,:,i)),c_3);
    50. v_M=and_M(and_M(v_1_M,v_2_M),v_3_M);
    51. for j=1:city_nums
    52. for k=j:city_nums
    53. if(v_M(j,k)==1)
    54. position_Matrix(1:city_nums,i)=add_M(position_Matrix(1:city_nums,i),[j;k]);
    55. end
    56. end
    57. end
    58. position_Matrix(city_nums+1,i)=calFitness(position_Matrix(1:city_nums,i),city_distance);
    59. if(position_Matrix(city_nums+1,i)2*city_nums+2,i))
    60. position_Matrix(city_nums+2:2*city_nums+1,i)=position_Matrix(1:city_nums,i);
    61. position_Matrix(2*city_nums+2,i)=position_Matrix(city_nums+1,i);
    62. end
    63. end
    64. [globalBestFitness,thisIndex]=min(position_Matrix(2*city_nums+2,:),[],2);
    65. globalBestPath=position_Matrix(city_nums+2:2*city_nums+1,thisIndex);
    66. % st_Matrix=ones(city_nums).*c_x-eye(city_nums)>rand(city_nums);
    67. % speed_current_Matrix(:,:,thisIndex)=(st_Matrix+st_Matrix')>ones(city_nums);
    68. end
    69. grid on;
    70. figure
    71. pathPlot(globalBestPath,city_position)
    72. title(num2str(globalBestFitness));

    3 写在最后

    部分理论引用网络文献,若有侵权请联系博主删除。 
     

  • 相关阅读:
    DVBS 卫星波段 设置
    判断sparse matrix是否是对称矩阵
    nginx——复习
    javaSE--数据类型(复习)
    管理类联考——英语二——阅读篇——题材:教育
    搜索系统中的文本相关性实践经验
    JDBC技术(一)——一个简单的JDBC测试
    Java中实体与Map的相互转换
    ChatGPT基础(三) 让ChatGPT回答质量提高十倍的提示词模版
    [附源码]java毕业设计全国人口普查管理系统论文
  • 原文地址:https://blog.csdn.net/weixin_46039719/article/details/125879726