当前位置:   article > 正文

2023年优化算法之减法平均优化器,matlab代码直接复制,并与灰狼,粒子群算法比较..._sabo优化器原理

sabo优化器原理

 今天的主角是:2023年4月份新鲜出炉的优化算法,“减法平均优化器”,目前知网还搜不到。该算法原理简单,非常适合新手,算上初始化粒子,总共就4个公式。但是!重点来了,该算法原理虽然简单,但是寻优效果却是极好的。下面会将该算法与粒子群算法和灰狼算法进行对比。

01

减法平均优化器原理

    减法优化器(Subtraction-Average-Based Optimizer,SABO)设计的基本灵感来自数学概念,如平均值、搜索代理位置的差异以及目标函数的两个值的差异符号。

  • (1)算法初始化

粒子初始化公式和粒子群等大部分智能优化算法一样,就是在上下限值的范围内采用rand函数随机生成一堆粒子。

fd3a3b7059f8d950c3701d873c473401.png

  • (2)SABO数学模型

SABO算法引入了一个新的计算概念,“-v”,称为搜索代理B与搜索代理a的v−减法,定义如下:

a9a56cbe8b253b83b6719b4054cf3e05.png

9f96546825fedd6c024b0fe46cc3dcca.png是一个维度为m的向量,是一个[1,2]生成的随机数,F(A)和F(B)分别是搜索代理A和B的目标函数的值,sign是signum函数。

在SABO算法中,任何搜索代理Xi在搜索空间中的位移都是通过每个搜索代理Xj的“-v”减法的算术平均值来计算的。位置更新方式如下:

38c493f0f57345ceb44a8e53b2f6d286.png

N是粒子的总数,ri是一个服从正态分布的随机值。

粒子位置替换公式,这个也与绝大多数算法一致。

bc6426d8e17d82fa2441a24276329e97.png

SABO算法的数学模型如下:

2dd405c809fb57c46f04270aed915413.png

SABO算法流程图如下:

87337f300c9de45fd173bfa613e81cfc.png

02

SABO的寻优效果展示

依旧是在CEC2005函数上进行测试,算法设置迭代次数为1000次,种群个数为30个。

34d12d2e36a27efd2a89f6bf2ead5bf6.png

569e1559f623277153c444198cf7eb1c.png

由这个F1函数可以看到,SABO算法在大约800次左右就寻优到了0。而其他算法最多也就是e-几百次方,很少有直接到0的。另外说一下,SABO算法由于原理简单,其运行速度是极快的,大家可以自行尝试哈。

接下来直接将SABO算法与灰狼算法和粒子群算法进行对比,SABO算法的好坏大家自行体会了。

7527a4c31c023283d3a98eace8a9c410.png

ff63f1b1b10423509222a93d0e5964e2.png

1cea641f260e0f10d7fda2f3c0098865.png

7fbe61deef68b0f3faa7f7079335c12f.png

b322d8c668f75b89008134d9deb4deb5.png

0cd3e969ac03df5a3f4c77c24311c721.png

aefff12d680c58084802a265fbfa4aeb.png

045bd03916bfcc690366c1e02a59e1b0.png

a9e48e71eb78588c2b18dbebb0a7e600.png

d9a0ed165a72a934c4beb627491b7d8c.png

03

SABO的MATLAB代码

  1. function[Best_score,Best_pos,SABO_curve]=SABO(N,T,lo,hi,m,fitness)
  2. lo=ones(1,m).*(lo);                              % Lower limit for variables
  3. hi=ones(1,m).*(hi); % Upper limit for variables
  4. %% INITIALIZATION
  5. for i=1:m
  6. X(:,i) = lo(i)+rand(N,1).*(hi(i) - lo(i)); % Initial population
  7. end
  8. for i =1:N
  9. L=X(i,:);
  10. fit(i)=fitness(L);
  11. end
  12. %%
  13. for t=1:T  % algorithm iteration
  14.    %%  update: BEST proposed solution
  15. [Fbest , blocation]=min(fit);
  16. if t==1
  17. xbest=X(blocation,:); % Optimal location
  18. fbest=Fbest; % The optimization objective function
  19. elseif Fbest<fbest
  20. fbest=Fbest;
  21. xbest=X(blocation,:);
  22. end
  23. %%
  24. DX=zeros(N,m);
  25. for i=1:N
  26. %% based om Eq(4)
  27. for j=1:N
  28. I=round(1+rand+rand);
  29. for d=1:m
  30. DX(i,d)=DX(i,d)+(X(j,d)-I.*X(i,d)).*sign(fit(i)-fit(j));
  31. end
  32. end
  33. X_new_P1= X(i,:)+((rand(1,m).*DX(i,:))./(N));
  34. X_new_P1 = max(X_new_P1,lo);
  35. X_new_P1 = min(X_new_P1,hi);
  36. %% update position based on Eq (5)
  37. L=X_new_P1;
  38. fit_new_P1=fitness(L);
  39. if fit_new_P1<fit(i)
  40. X(i,:) = X_new_P1;
  41. fit(i) = fit_new_P1;
  42. end
  43. %%
  44. end% end for i=1:N
  45. %%
  46.     best_so_far(t)=fbest;
  47. average(t) = mean (fit);
  48. end
  49. Best_score=fbest;
  50. Best_pos=xbest;
  51. SABO_curve=best_so_far;
  52. end

这里还是直接上核心代码,大家直接复制即可。

SABO算法的文献,SABO的MATLAB代码,SABO算法与灰狼算法和粒子群算法的对比代码统统都打包好了,直接回复关键词免费获取。

后台回复关键词,获取代码:2023

觉得文章不错的,给作者留个赞吧!谢谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/416004
推荐阅读
相关标签
  

闽ICP备14008679号