Hello Mat

 找回密码
 立即注册
查看: 6045|回复: 3

9-PSO粒子群算法的障碍路径寻优Path Planning-三角形障碍

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2019-10-8 23:03:13 | 显示全部楼层 |阅读模式
9-PSO粒子群算法的障碍路径寻优Path Planning-三角形障碍
链接:https://pan.baidu.com/s/1IZ_On5XWVkKIHGrNbQ8H5Q 提取码:33td

具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1

主程序如下:
  1. clc,clear,close all
  2. warning off
  3. % 初始化种群
  4. model = CreateModel();
  5. % PSO 参数
  6. c1 = 1.4995;  
  7. c2 = 1.4995;
  8. Vmin = -1;
  9. Vmax = 1;
  10. w = 1;         % 权重
  11. wdamp = 0.98;  % 阻尼
  12. maxiter = 50;  % 迭代次数
  13. sizepop = 20;  % 种群数量
  14. nvar = model.n;   % n个未知量
  15. popmin_x = model.xmin; % x
  16. popmax_x = model.xmax; % x
  17. popmin_y = model.ymin; % y
  18. popmax_y = model.ymax; % y

  19. init_pop.position = [];  % 位置信息
  20. init_pop.Velocity = [];  % 速度信息
  21. init_pop.fitness = [];   % 适应度值信息
  22. init_pop.sol = [];       % 解集信息
  23. init_pop.Best.position = [];  % 个体最优 位置信息
  24. init_pop.Best.fitness = [];   % 个体最优 适应度值信息
  25. init_pop.Best.sol = [];       % 个体最优 解集信息
  26. % 粒子群
  27. pop = repmat(init_pop, sizepop, 1);
  28. clear init_pop
  29. %% 初始化种群
  30. fitnesszbest = inf;
  31. for i=1:sizepop
  32.     pop(i).position = CreateRandomSolution(model); % 初始化个体
  33.     [pop(i).fitness , pop(i).sol]= fun( pop(i).position, model );         % 适应度值
  34.     pop(i).Velocity.x = zeros(1, nvar);
  35.     pop(i).Velocity.y = zeros(1, nvar);
  36.     % 更新个体最优
  37.     pop(i).Best.position = pop(i).position;
  38.     pop(i).Best.fitness = pop(i).fitness;
  39.     pop(i).Best.sol = pop(i).sol;
  40.     if(pop(i).Best.fitness<fitnesszbest)
  41.         fitnesszbest = pop(i).Best.fitness;
  42.         zbest = pop(i).Best;
  43.     end
  44. end
  45. %% 迭代寻优
  46. for i=1:maxiter
  47.     for j=1:sizepop
  48.         % 横坐标的操作
  49.         pop(j).Velocity.x = w*pop(j).Velocity.x + c1*rand(1,nvar).*(pop(j).Best.position.x-pop(j).position.x) ...
  50.                             + c2*rand(1,nvar).*(zbest.position.x-pop(j).position.x);
  51.         % 取值范围
  52.         pop(j).Velocity.x = max(pop(j).Velocity.x, Vmin);
  53.         pop(j).Velocity.x = min(pop(j).Velocity.x, Vmax);
  54.         pop(j).position.x = pop(j).position.x + pop(j).Velocity.x;
  55.         pop(j).position.x = max(pop(j).position.x, popmin_x);
  56.         pop(j).position.x = min(pop(j).position.x, popmax_x);
  57.         
  58.         % 纵坐标的操作
  59.         pop(j).Velocity.y = w*pop(j).Velocity.y + c1*rand(1,nvar).*(pop(j).Best.position.y-pop(j).position.y) ...
  60.                             + c2*rand(1,nvar).*(zbest.position.y-pop(j).position.y);
  61.         % 取值范围
  62.         pop(j).Velocity.y = max(pop(j).Velocity.y, Vmin);
  63.         pop(j).Velocity.y = min(pop(j).Velocity.y, Vmax);
  64.         pop(j).position.y = pop(j).position.y + pop(j).Velocity.y;
  65.         pop(j).position.y = max(pop(j).position.y, popmin_y);
  66.         pop(j).position.y = min(pop(j).position.y, popmax_y);
  67.         
  68.         [pop(j).fitness , pop(j).sol]= fun( pop(j).position, model );         % 适应度值
  69.         
  70.         if pop(j).fitness<pop(j).Best.fitness
  71.             pop(j).Best.fitness = pop(j).fitness;
  72.             pop(j).Best.position = pop(j).position;
  73.             pop(j).Best.sol = pop(j).sol;
  74.         end
  75.         if(pop(j).Best.fitness<fitnesszbest)
  76.             fitnesszbest = pop(j).Best.fitness;
  77.             zbest = pop(j).Best;
  78.         end
  79.         
  80.         w = w * wdamp;
  81.     end
  82.     fitness_iter(i) = fitnesszbest;
  83.    
  84.     figure(1)
  85.     PlotSolution(zbest.sol,model)
  86.     pause(0.1)
  87. end

  88. %% 最后的显示部分
  89. disp('最优解')
  90. disp(zbest)
  91. fprintf('\n')

  92. figure('color',[1,1,1])
  93. plot(fitness_iter,'ro-','linewidth',2)
  94. xlabel('迭代次数'); ylabel('适应度曲线');
  95. axis tight
  96. grid on

  97. figure(1)
  98. PlotSolution(zbest.sol,model)
  99. pause(0.1)
复制代码
参考:
【1】结果动态图
【2】子函数参考链接
【3】粒子群算法PSO视频讲解
【4】基于PSO的火车票分配问题:链接:http://pan.baidu.com/s/1nvRYrg9 密码:bfua
【5】基于PSO的机器人路径优化问题:链接:http://pan.baidu.com/s/1jI0uNlk
【6】PSO_source_error_NRMSE_惯性因子gbest,改进的PSO算法结构体化编程




算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-11-22 22:55 , Processed in 0.231907 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表