1.简介

本文提出了一种基于无刺蜂(Tetragonula carbonaria)筑巢及调节蜂巢温度行为的新优化问题求解方法。无刺蜂优化算法(Tetragonula Carbonaria Optimization Algorithm,简称TGCOA)模拟了该蜜蜂在三种不同温度条件下的行为:低温时通过加固蜂巢结构来维持稳定、中温时以螺旋方式建造蜂巢、高温时通过稳定蜂巢环境来保持平衡。这些与温度相关的策略在解空间中动态平衡了全局开发与局部探索,从而实现更高效的搜索。

2. 四方蜂优化算法(TGCOA)

在这里插入图片描述
图4. Tetragonula carbonaria蜂巢的三维螺旋结构。
蜂巢结构受环境温度的强烈影响,这决定了蜜蜂是优先考虑热量生成、有效扩展还是蜂巢的通风。在低温(10至17°C)下,一些工蜂聚集在一起,进行轻微的振翅运动以加热蜂巢并保护幼虫。同时,在高温(30至40°C)下,振翅运动增加作为一种冷却调节机制。最后,当温度在18至29°C之间时,没有振翅运动,蜜蜂专注于建造螺旋巢[82,83]。建造过程是分阶段的;蜜蜂在边缘建造新细胞,填充这些细胞的卵,并在移动到下一层之前密封它们[84]。细胞的六边形几何形状允许空间的有效分布,并有利于空气循环,这对于蜂巢的发展至关重要[85]。每个蜜蜂在分散系统中间接协作;需要执行的任务通过蜂巢温度驱动环境中的微小变化进行通信;这种机制被称为随机性。

2.2 数学模型和优化算法

研究集中在模拟Tetragonula carbonaria蜜蜂在蜂巢中的集体构建和热调节机制。受蜜蜂如何响应温度变化并改变其行为的启发,创建了一种新算法,该算法模仿蜜蜂如何根据其环境改变行为。该模型再现了蜜蜂群落为保持热稳定性和扩展螺旋结构而使用的动态策略。

2.2.1 轻微振翅运动和蜜蜂聚集以加热蜂巢

轻微振翅运动包括蜜蜂翅膀的微小振动,而不实际飞行。这种机制在10至17°C的温度下激活蜜蜂的热发生器,使蜜蜂聚集在蜂巢附近以产生热量并保持蜂巢内的温度稳定[88,89]。这种机制如图5所示,并基于Fourier定律[90],数学上表示为以下方程:

Q=dTdx⋅A⋅k(2) Q = \frac{dT}{dx} \cdot A \cdot k \tag{2} Q=dxdTAk(2)

其中(Q)是热量(瓦特,W),dTdx\frac{dT}{dx}dxdT表示温度梯度(单位长度的温度变化),AAA是热量流动的横截面积,(k)是材料的热导率(单位为W/m·C)。方程(2)可以表示为:

dTdx=ΔT(t)=∑nbnb(ψ⃗r(t)−x⃗r(t))nb(3) \frac{dT}{dx} = \Delta_T (t) = \frac{\sum_{nb}^{nb} (\vec{\psi}_r(t) - \vec{x}_r(t))}{nb} \tag{3} dxdT=ΔT(t)=nbnbnb(ψ r(t)x r(t))(3)

其中ψ⃗r(t)−x⃗r(t)\vec{\psi}_r(t) - \vec{x}_r(t)ψ r(t)x r(t)表示温度变化。ψ⃗r(t)\vec{\psi}_r(t)ψ r(t)表示在当前代ttt中随机生成的蜜蜂子集,聚集在一起以增加蜂巢温度。ψ⃗⊂X\vec{\psi} \subset Xψ X,其中XXX是蜜蜂的位置.x⃗r(t)\vec{x}_r(t)x r(t)是当前第(t)代的第rrr只工蜂的位置。(nb)是一个随机生成的整数,表示聚集在一起加热蜂巢的蜜蜂数量。方程(3)可以重写为:

x⃗r(t+1)=12[x⃗r(t)+ΔT(t)⋅A2](4) \vec{x}_r(t + 1) = \frac{1}{2} \left[ \vec{x}_r(t) + \Delta_T (t) \cdot A^2 \right] \tag{4} x r(t+1)=21[x r(t)+ΔT(t)A2](4)
在这里插入图片描述
图5. 轻微振翅运动和蜜蜂聚集以加热蜂巢

在该模型中,x⃗r(t+1)\vec{x}_r(t + 1)x r(t+1)表示当前代t+1t + 1t+1中第rrr只工蜂(搜索代理)在解空间中的位置。ΔT(t)\Delta_T (t)ΔT(t)表示方程(3)中的温度变化。AAA是随机生成的振翅幅度,介于0.2和0.3 mm之间。最后,kkk表示热导率,设为0.03 W/m·C(瓦特每米开尔文)。该方法的伪代码在算法1中给出。
在这里插入图片描述

2.2.2 强烈振翅运动和蜜蜂聚集以冷却蜂巢

强烈振翅运动发生在环境温度在30至40°C之间时,作为调节蜂巢内部温度的冷却机制[76]。这种机制如图6所示,并用以下方程数学表示:

x⃗r(t+1)=12[x⃗r(t)+ΔT(t)⋅A2](5) \vec{x}_r(t + 1) = \frac{1}{2} \left[ \vec{x}_r(t) + \Delta_T (t) \cdot A^2 \right] \tag{5} x r(t+1)=21[x r(t)+ΔT(t)A2](5)

在该模型中,x⃗r(t+1)\vec{x}_r(t + 1)x r(t+1)表示当前代t+1t + 1t+1中第rrr只工蜂(搜索代理)在解空间中的位置。ΔT(t)\Delta_T (t)ΔT(t)表示方程(3)中的温度变化。AAA是随机生成的振翅幅度,介于0.2和0.3 mm之间。最后,kkk表示热导率,设为0.03 W/m·C(瓦特每米开尔文)。

cf(t)=(a−1)tMaxiter−a(6) cf(t) = \frac{(a - 1)t}{Max_{iter} - a} \tag{6} cf(t)=Maxitera(a1)t(6)

cf(t)cf(t)cf(t)是一个动态调整步长的因素,随着算法的进展而变化。aaa表示蜜蜂每秒执行的振翅次数,设为50。MaxiterMax_{iter}Maxiter表示迭代的最大次数。该策略的伪代码在算法2中给出。

法2 强烈振翅运动和蜜蜂聚集**
在这里插入图片描述#### 2.2.3 构建螺旋蜂巢

当温度在18至29°C之间时,蜜蜂专注于优化蜂巢的构建。在这些有利的热条件下,蜜蜂通过随机性构建几何螺旋模式。下一个细胞构建的移动由以下方程表示:

x⃗r(t+1)=x⃗r(t)+f⃗(7) \vec{x}_r(t + 1) = \vec{x}_r(t) + \vec{f} \tag{7} x r(t+1)=x r(t)+f (7)

其中x⃗r(t)\vec{x}_r(t)x r(t)表示当前代(t)中第r只工蜂(搜索代理)在解空间中的位置。Rx⃗r(t)R\vec{x}_r(t)Rx r(t)表示当前代(t)中找到的最佳搜索代理。f⃗\vec{f}f 是一个在范围(0, 1)内随机生成的值,引入了当前代(t)中的轻微变化。这个模型模拟了蜜蜂在其位置周围的短距离位移,并使它们能够执行局部搜索并微调新细胞的放置。局部几何基于极坐标系统中的Archimedean螺旋,如下方程所示:

Δx=a+b⋅cos⁡(θ),Δy=a+b⋅sin⁡(θ)(8) \Delta x = a + b \cdot \cos(\theta), \quad \Delta y = a + b \cdot \sin(\theta) \tag{8} Δx=a+bcos(θ),Δy=a+bsin(θ)(8)

在该模型中,
x⃗r(t+1)=x⃗r(t)+arctan⁡(ΔyΔx)1.58⋅x⃗r(t)⋅1.19(9)\vec{x}_r(t + 1) = \vec{x}_r(t) + \frac{\arctan \left( \frac{\Delta y}{\Delta x} \right)}{1.58} \cdot \vec{x}_r(t) \cdot 1.19 \tag{9}x r(t+1)=x r(t)+1.58arctan(ΔxΔy)x r(t)1.19(9)

其中θ\thetaθ表示当前迭代(t)中的角度变化。MaxiterMax_{iter}Maxiter是最大迭代次数,π180\frac{\pi}{180}180π将角度从度转换为弧度。

注意,蜂巢的构建阶段基于方程(7)和(10),其中aaabbb是随机选择的,如算法3所示。方程(7)表示围绕蜜蜂的细胞构建,而方程(10)表示螺旋结构的空间构建。整个策略的伪代码在算法3中给出。

%%完整代码的链接:https://jp.mathworks.com/matlabcentral/fileexchange/181842-algorithm-based-on-hive-construction-by-tetragonula-c-bee
function [vMin,theBestVct,Convergence_curve]=TGCOA(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
	Positions=initialization(SearchAgents_no,dim,ub,lb);
	 for i=1:size(Positions,1)
	      Fitness(i)=fobj(Positions(i,:)); % get fitness     
	 end
	[vMin minIdx]= min(Fitness);  % the min fitness value vMin and the position minIdx
	theBestVct= Positions(minIdx,:);  % the best vector 
	[vMax maxIdx]= max(Fitness);  % the max fitness value vMax and the position maxIdx
	Convergence_curve=zeros(1,Max_iter);
	Convergence_curve(1)= vMin;
	lT= 10;  % lower temperature allowed
	uT= 40;  % upper temperature allowed
	k= 0.03; % temperature generated for heating  and -k for cooling
	alfa= 50; 
	a=0;  %
	b= 10;  %
	nbIni= 2; % minimum number of bees
	nbEnd= SearchAgents_no * 0.10 ; % maximum number of bees 
	t=0;% Loop counter
	% Main loop
	for t=1:Max_iter  
	   for r=1:SearchAgents_no       
	       fT= lT + (uT-lT)* rand;
	       if((fT >= 10) && (fT <= 17))
	                 nb= round(nbIni + (nbEnd-nbIni) * rand()); % Number of bees that will be clustered to warm the hive.
	                 A= 0.2 + 0.1* rand();  % A [0.2, 0.3]
	                 sumatory= Tg( SearchAgents_no, nb, Positions, r );        
	                 v(r,:)= (theBestVct + sumatory)/2 * (A^2) * k;  % Strategy 1:  Slight fluttering motion and cluster to warm the hive (Eq. 4) Section 2.2.1
	      elseif ((fT >= 18) && (fT <= 29))
	               if rand() <= 0.2
	                    v(r,:)= theBestVct+ (drand / (1-CauchyRand(0,1)));  % Strategy 3: The movement of the bee to build the next cel  (Eq. 7) Section 2.2.3
	               else
	                   angulo= (90- ((90*r)/Max_iter))*pi/180;
	                   x= a + b * angulo * cos(angulo);
	                   y= a + b * angulo * sin(angulo);
	                    v(r,:)= theBestVct + abs(atan(y/x)/1.58)*1.19 * Positions(r,:); % Strategy 3: Building the spiral hive (Eq. 9) Section 2.2.3
	               end
	       else
	%             v(r,:)= Positions(r,:);
	                 nb= round(nbIni + (nbEnd-nbIni) * rand()); 
	                 A= 0.2 + 0.1* rand();  % A [0.2, 0.3]
	                 sumatory= Tg( SearchAgents_no, nb, Positions, r );      
	                 v(r,:)= theBestVct +   sumatory * (A^2) *((((alfa-1)*r)/Max_iter)-alfa)* (-1*k); % Strategy 2:Strong fluttering motion and clustering for hive cooling (Eq. 5) Section 2.2.2]
	      end  
	   %********************************************************************************
	        v= VerificaIntervalo(v, r ,ub,lb);
	   % Evaluate new solutions
	     Fnew= fobj(v(r,:));
	     % Update if the solution improves
	     if Fnew <= Fitness(r);
	        Positions(r,:)= v(r,:);
	        Fitness(r)= Fnew;
	     end
	     if Fnew <= vMin
	         theBestVct= v(r,:);
	         vMin= Fnew;
	     end    
	   end
	 end

Gámez MGM, Vázquez HP. A Novel Swarm Optimization Algorithm Based on Hive Construction by Tetragonula carbonaria Builder Bees. Mathematics. 2025; 13(17):2721. https://doi.org/10.3390/math13172721.

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐