Hello Mat

 找回密码
 立即注册
查看: 6011|回复: 4

59-改进的蝙蝠算法的函数寻优分析

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2018-7-26 23:09:18 | 显示全部楼层 |阅读模式
改进的蝙蝠算法的函数寻优分析
百度网盘链接:
链接:https://pan.baidu.com/s/1O7t7kOcBTrCNmUAYgMHArQ
具体链接在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. % BA算法参数
  4. maxiter = 20;  % 迭代次数
  5. sizepop = 10;  % 种群数量
  6. % 频率范围
  7. popmin1 = -1;  popmax1 = 1; % x1  频率
  8. popmin2 = -1;  popmax2 = 1; % x2  频率
  9. fmin = 0.1;    % 最小频率
  10. fmax = 0.5;    % 最大频率

  11. A = 0.1;          % 音量 (不变或者减小)
  12. alpha = 0.98;     % 音量阻尼系数

  13. impluse = 0.85;   % 脉冲率 (不变或增加)
  14. gama = 1000;      % M

  15. Vmin = -1; % 最小速度
  16. Vmax = 1;  % 最大速度
  17. %% 初始化种群
  18. for i=1:sizepop
  19.     x1 = popmin1 + (popmax1-popmin1)*rand;
  20.     x2 = popmin2 + (popmax2-popmin2)*rand;
  21.     pop(i,1) = x1;
  22.     pop(i,2) = x2;
  23.     fitness(i) = fun([x1,x2]);
  24.     V(i,1)=0;
  25.     V(i,2)=0;
  26. end
  27. % 记录一组最优值
  28. [bestfitness,bestindex]=min(fitness);
  29. zbest=pop(bestindex,:);   % 全局最佳
  30. gbest=pop;                % 个体最佳
  31. fitnessgbest=fitness;     % 个体最佳适应度值
  32. fitnesszbest=bestfitness; % 全局最佳适应度值
  33. %% 迭代寻优
  34. for i=1:maxiter
  35.     for j=1:sizepop
  36.         f = fmin + (fmax-fmin)*rand;
  37.         V(j,:) = V(j,:) + (pop(j,:)-zbest)*f;
  38.         V(j,:) = lb_ub(V(j,:),Vmax,Vmin);
  39.         
  40.         pop(j,:) = pop(j,:) + V(j,:);
  41.         
  42.         % 脉冲率
  43.         if rand>impluse
  44.             pop(j,:) = zbest + A * randn(1,2);
  45.         end
  46.         
  47.         % x1  越界限制
  48.         pop(j,1) = lb_ub(pop(j,1),popmax1,popmin1);
  49.         % x2  越界限制
  50.         pop(j,2) = lb_ub(pop(j,2),popmax2,popmin2);
  51.         
  52.         % 适应度更新
  53.         fitness(j) = fun(pop(j,:));
  54.         
  55.         % 比较  个体间比较
  56.         if fitness(j)<fitnessgbest(j)
  57.             fitnessgbest(j) = fitness(j);
  58.             gbest(j,:) = pop(j,:);
  59.         end
  60.         if fitness(j)<bestfitness
  61.             bestfitness = fitness(j);
  62.             zbest =  pop(j,:);
  63.         end
  64.         
  65.         % 随机的产生新的解
  66.         newpop = pop(j,:) + (2*rand(1,2)-1)*A;
  67.         % x1  越界限制
  68.         newpop(1) = lb_ub(newpop(1),popmax1,popmin1);
  69.         % x2  越界限制
  70.         newpop(2) = lb_ub(newpop(2),popmax2,popmin2);
  71.         if(rand<A && fun(newpop)<fun(zbest))
  72.             bestfitness = fun(newpop);
  73.             zbest = newpop;
  74.             A = alpha*A;
  75.             impluse = impluse*( 1-exp(-gama*i) );
  76.             
  77.             fitness(j) = fun(newpop);
  78.             pop(j,:) = newpop;
  79.         end
  80.         
  81.     end
  82.     fitness_iter(i) = bestfitness;
  83. end
  84. %% 显示结果display results
  85. disp('最优解')
  86. disp(zbest)
  87. fprintf('\n')

  88. disp(['最优解对应的最优目标函数值(适应度值)', num2str( bestfitness )])

  89. figure('color',[1,1,1])
  90. plot(fitness_iter,'ro-','linewidth',2)
  91. axis tight
复制代码

参考:Xin-She Yang. A New Metaheuristic Bat-Inspired Algorithm



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 21:51 , Processed in 0.218884 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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