榛子树搜索算法(Hazelnut tree search algorithm,HTS)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

在本文中,提出了一种新颖的自然启发优化算法,榛子树搜索(HST),用于解决数值和工程优化问题。HST 是一种多智能体算法,可模拟在森林中寻找最佳榛子树的搜索过程。该算法由三个主要执行器组成:生长、果实散播和根系传播。在成长阶段,树木在共享资源上相互竞争,以成长并提高其健康度。在水果散播阶段,HTS 在动物和啮齿动物的帮助下,通过模拟榛子在森林周围的运动来进行探索。在根传播中,HTS 通过对周围树木的根传播机制进行建模来执行利用。在多变量无约束数值优化基准和约束工程问题上评估了所提出算法的性能。将所提出的算法与其他一些优化算法进行比较,可以看出 HTS 在解决问题的成功率和在大多数基准问题上找到全局最优值方面的优越性。

⛄ 部分代码

function [x] = growth(Population, AlgorithmParams, ProblemParams, alpha, t)

dmax = norm(ProblemParams.VarMax-ProblemParams.VarMin);

maxCost=max(Population(:,end));

sumCost=sum(Population(:,end));

ProblemParams.dmax=dmax;

ProblemParams.maxCost=maxCost;

ProblemParams.sumCost=sumCost;

for i=1:AlgorithmParams.NumOfTrees

    cored=Population(i,:);

    w1=unifrnd(alpha,alpha);

    g=(1-exp(-4*t/AlgorithmParams.NumOfYears)).*w1;

    R=cored(:,1:end-1)+g;

    

    r=rand;

    if r>=0.5

        x(i,:)=R;

    else

        landa=computeLanda(ProblemParams,AlgorithmParams,Population, i);

        x(i,:)=(1/(1+landa)).*R;

    end    

    x(i,:)=max(x(i,:),ProblemParams.VarMin);

    x(i,:)=min(x(i,:),ProblemParams.VarMax);

end

costs = feval(ProblemParams.CostFuncName,x);

x(:,end+1) = costs;

end

function l=computeLanda(ProblemParams,AlgorithmParams,Population,i)

fi=Population(i,end);

coredTree=Population(i,:);

if ProblemParams.maxCost>0

    nfi = 0.9*(ProblemParams.maxCost-fi)/ProblemParams.sumCost;

else

    nfi = 0.7*max(ProblemParams.maxCost-fi)/ProblemParams.sumCost;

end

zi=round(nfi*(AlgorithmParams.NumOfTrees-1));    % Excluding individual i so the neighbors is selected from N-1 trees

zi=min(zi, AlgorithmParams.NumOfTrees-1);

temp=Population(1:end ~=i, :);       % For deleting individual i

RandomIndex = randperm(AlgorithmParams.NumOfTrees-1);

s=RandomIndex(1:zi);

Ng=temp(s,:);

landa=0;

for j=1:zi

    dij=norm(coredTree(1,end-1)-Ng(j,1:end-1))/ProblemParams.dmax;

    fj=Ng(j,end);

    landa=landa+(fj/fi)*atan(fj/dij);

end

l=landa;

end

⛄ 运行结果

⛄ 参考文献

Emami, H. Hazelnut tree search algorithm: a nature-inspired method for solving numerical and engineering problems. Engineering with Computers (2021). https://doi.org/10.1007/s00366-021-01460-1

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值