✅作者简介:热爱科研的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