• 2023年优化算法之之霸王龙优化算法(TROA),原理公式详解,附matlab代码


    霸王龙优化算法(Tyrannosaurus optimization,TROA)是一种新的仿生优化算法,该算法模拟霸王龙的狩猎行为,具有搜索速度快等优势。该成果于2023年发表在知名SCI期刊e-Prime-Advances in Electrical Engineering, Electronics and Energy上。

    TROA算法通过位置初始化、狩猎和追逐、选择阶段三个主要操作模拟了霸王龙的狩猎行为,最后选取最优解。

    算法原理

    (1)种群位置初始化

    TROA是一种基于种群的算法,它在搜索空间中随机生成猎物数量。设Xx为猎物的位置或位置,在上下限范围内随机生成,其数学模型如下式表示: 

     式中,Xi =[x1, x2··xn]为猎物位置,i=1,2··n,其中,n为维数,np为种群数,dim为搜索空间维数,ub为上限,lb为下限。

    (2)狩猎和追逐

    霸王龙的捕猎是让幼崽追逐和捕捉猎物,所以当霸王龙捕食时,它会进行随机捕食,捕食动作的数学模型如下式表示: 

     其中,Er为到达分散猎物的估计,sr为狩猎成功率,在[0.1,1]之间。如果成功率为0,则表示猎物已经逃脱,狩猎失败,猎物的位置需要相应更新。目标是猎物相对霸王龙位置的最小位置,霸王龙的奔跑速度是tr。

    (3)选择阶段

    选择过程取决于猎物的位置,即目标猎物当前的位置和之前的位置。如果霸王龙捕猎失败,猎物的位置就变成零。

      其中,  为初始随机猎物位置的适应度函数,  为更新猎物位置的适应度函数。

    结果展示

    以为CEC2005函数集为例,进行结果展示:

    c955b04523c1f2c03afe30eb0a42e396.png

    e8f6631ec0425cff655685af50d5622e.png

    789bcdea489610f2514e28f98f33e54a.png

    6f5ceaf68502043073505b2e40c469b1.png

    b421a7c07d79f1a1a679cdddd3a961ab.png

     MATLAB核心代码

    1. % 霸王龙优化算法
    2. function [Jnew,J,znew,Convergence_curve1,Positions,p,JJ]=TROA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj,sr,tr,pr)
    3. Leader_score=inf;
    4. trex_pos=ones(SearchAgents_no,dim);
    5. % initial position of prey
    6. Positions=initialization(SearchAgents_no,dim,ub,lb);
    7. z=Positions;
    8. t=1; % starting iteration
    9. walk=[0.046 0.06];
    10. run=0.3;
    11. for p=1:SearchAgents_no
    12. J(p,1) = fobj(z(p,:));
    13. end
    14. [~,indx] = min(J);
    15. Target(:,:) = z(indx,:);
    16. JJ=min(J);
    17. while t
    18. ES=randn*(1-(t/Max_iteration)); % Probability Ratio of hunting sucess of the prey [-1 to 1]
    19. for pp=1:SearchAgents_no
    20. for j=1:dim
    21. % hunting of the prey
    22. Rnd=floor(rand()*SearchAgents_no)+1;
    23. if rand
    24. znew(pp,j)=z(pp,j)+sr*( trex_pos(pp,j)*tr-Target(1,j)*rand()*pr); %sucess
    25. else
    26. znew(pp,j)=z(pp,j)*rand();
    27. end
    28. end
    29. Jnew(pp,:)=fobj(znew(pp,:));
    30. for j=1:dim
    31. %-----------selection-----------
    32. if J(pp,1)>Jnew(pp)
    33. z(pp,:)=znew(pp,:);
    34. J(pp,1)=Jnew(pp);
    35. % updation of target
    36. [~,indx] =min(J);
    37. Target = z(indx,:);
    38. else
    39. Target(1,j)=zeros;
    40. J(pp,1)=J(pp);
    41. end
    42. end
    43. znew1=z(1,:);
    44. end
    45. Convergence_curve1(t)=min(J); %Update the convergence curve
    46. p(t)= znew1(1,1);
    47. t=t+1;
    48. end
    49. end

    参考文献

    [1] Sahu V S D M, Samal P, Panigrahi C K. Tyrannosaurus optimization algorithm: A new nature-inspired meta-heuristic algorithm for solving optimal control problems[J]. e-Prime-Advances in Electrical Engineering, Electronics and Energy, 2023, 5: 100243.

    完整代码获取方式:后台回复关键字:TGDM880

  • 相关阅读:
    电影推荐 - 亲密
    SpringBoot 整合 websocket (二)—— 部署Nginx\Tomcat
    Python:入门与基本语法
    深入浅出 OkHttp 源码解析及应用实践
    vue3编译优化之“静态提升”
    【重磅】华为云盘古大模型5.0,正式发布!
    Mysql高级20-性能分析
    【MATLAB第76期】基于MATLAB的代表性样本筛选方法合集(针对多输入单输出数据)
    20221122非累加的m3u8的ts切片列表的补全步骤
    kafka与zookeeper的SSL认证教程
  • 原文地址:https://blog.csdn.net/woaipythonmeme/article/details/134453993