找回密码
 注册
关于网站域名变更的通知
查看: 368|回复: 1
打印 上一主题 下一主题

基于迭代局部搜索和随机惯性权重的BA算法MATLAB实现(ILSSIWBA)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-10-21 13:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
0 F3 j1 ?4 v* F  D" |( O0 g
主要思想
1 V( T* b2 x' u. i% V5 O9 I6 R# A
+ m. T" Z" |, Q. G+ a 6 f( i5 A, Q- U' B4 v# i& ~
2 ~+ A- ]  b& B+ F" X
流程图
& N4 p, Y, M6 ?8 x/ }+ B
( b% h' X9 d+ s3 m3 t# s5 d , c" ?# d6 J2 b$ n- m; g1 ]8 w

- F* J* L7 H5 Y5 x( V
& e' P: T" N- k  [8 Y/ {% c. z, _MATLAB代码" m3 @, J* m# e- A
2 R8 r& \8 X3 O! C8 i5 \5 g" c. h
  • function [bestMin, bestID] = ILSSIWBA()
  • %A new bat algorithm based on iterative local search and stochastic inertia weight
  • %omegaxyz.com QQ: 644327005
  • clc;
  • %% 经典BA参数设置
  • t = 1;
  • maxT = 100; %最大迭代次数
  • dim = 30; %问题的维度
  • sizep = 50; %种群大小
  • xmin = -0.5;
  • xmax = 0.5; %位置向量的范围
  • A = 0.6.*ones(sizep,1);    % 响度 (不变或者减小)
  • r = zeros(sizep,1);      % 脉冲率 (不变或增加))
  • Qmin = 0;         % 最小频率
  • Qmax = 1;         % 最大频率
  • %% 初始化
  • Lb = xmin*ones(1,dim);
  • Ub = xmax*ones(1,dim);
  • pop = Lb+(Ub-Lb).*rand(sizep,dim); %种群初始化
  • popv = zeros(sizep,dim);   % 速度
  • Q = zeros(sizep,1);   % 频率
  • pfitness = zeros(dim,1);
  • for i = 1:sizep
  •     pfitness(i) = evaluate2(pop(i,:)); %评价
  • end
  • [bestMin, bestID]=min(pfitness);
  • bestS = pop(bestID, :);
  • bestArchive = zeros(maxT,1);
  • %% 论文中的新策略参数
  • umin = 0.4; %The second modification (SIW method)
  • umax = 0.9;
  • sigma = 0.2;
  • R0 = 0.1; %The 3th modification
  • Rupper = 0.7;
  • A0 = 0.9;
  • Alower = 0.6;
  • %% 具体迭代过程
  • while t <= maxT
  •     for i = 1:sizep
  •         Q(i)=Qmin+(Qmin-Qmax)*rand();
  •         w = umin +(umax-umin)*rand()+sigma*randn(); %The second modification (SIW method)
  •         popv(i,:)=w*popv(i,:)+(pop(i,:)-bestS)*Q(i); %The second modification (SIW method)
  •         Stemp = pop(i,:)+popv(i,:);
  •         % 脉冲率
  •          if rand>r(i)
  •              Stemp=bestS-1+2*rand(1,dim);
  •          end
  •          fitTemp = evaluate2(Stemp);
  •          if (fitTemp<=pfitness(i))&&(rand()<A(i))
  •             pop(i,:) = Stemp;
  •             pfitness(i) = fitTemp;
  •             A(i) = (A0-Alower)/(1-maxT)*(t-maxT)+Alower; %The 3th modification
  •             r(i) = (R0-Rupper)/(1-maxT)*(t-maxT)+Rupper; %The 3th modification
  •          end
  •          if fitTemp <= bestMin
  •             bestID = i;
  •             bestMin = fitTemp;
  •                  bestS = Stemp;
  •          end
  •     end
  •     interX = bestS.*rand(); %The 1th modification (ILS method)
  •     interXfit = evaluate2(interX);
  •     if interXfit < bestMin
  •         bestMin = interXfit;
  •         bestS = interX;
  •         pop(bestID,:) = bestS;
  •         pfitness(bestID,:) = bestMin;
  •     else
  •         if exp(bestMin-interXfit) > rand()
  •             bestMin = interXfit;
  •             bestS = interX;
  •             pop(bestID,:) = bestS;
  •             pfitness(bestID,:) = bestMin;
  •         end
  •     end
  •     bestArchive(t) = bestMin;
  •     fprintf('GEN: %d  min: %.4f\n', t, bestMin);
  •     t = t +1;
  • end
  • end%.m end
    ; R, ]: R+ y, M/ K  H( Q% `
               
, \; L  Y* P; H+ x- ]- z! H; c2 ]) ^! c! Y7 s1 z
评价函数:
: ]( f7 v8 M3 d5 Z) U/ \
- \  N8 r: ^! g7 s) l/ R
  • function z = evaluate2(u)
  • %Weierstrass
  • dim= length(u);
  • sum_1=0;
  • sum_2=0;
  • sum_3=0;
  • a = 0.5;
  • b = 3;
  • for i=1:dim
  •     for k=0:30
  •        sum_1=sum_1+(a^k)*(cos(2*pi*(b^k)*(u(i)+0.5)));
  •     end
  •     sum_2=sum_2+sum_1;
  •     sum_1 = 0;
  • end
  • for k=0:30
  •        sum_3=sum_3+(a^k)*(cos(2*pi*(b^k)*0.5));
  • end
  • z=sum_2-dim*sum_3;
  • end2 O3 v7 O7 z9 e0 u$ ~7 L

+ u7 S) y, I" v3 s+ X
5 H9 ~' X& W! L% o  

该用户从未签到

2#
发表于 2020-10-21 14:48 | 只看该作者
基于迭代局部搜索和随机惯性权重的BA算法MATLAB实现(ILSSIWBA)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-21 19:45 , Processed in 0.078125 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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