你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

智能优化算法:水基湍流优化算法-附代码

2021/12/8 21:31:01

智能优化算法:水基湍流优化算法

文章目录

  • 智能优化算法:水基湍流优化算法
    • 1.算法原理
      • 1.1 漩涡模型
      • 1.2漩涡的形成
      • 1.3 漩涡对其内在和其他漩涡的影响
      • 1.4 离心力
      • 1.5 漩涡之间的相互作用
    • 2.算法结果
    • 3.参考文献
    • 4.Matlab

摘要:水基湍流优化算法(Turbulent Flow of Water-based Optimization,TFWO)是于2020年,提出的一种新型智能优化算法。灵感来自于一个自然搜索现象,即在湍流中产生的漩涡,实现全局搜索。该算法消除了控制参数选择问题,提高了收敛能力,并且具有固定的结构。与其他优化算法相比,该算法具有更好的竞争性和鲁棒性。

1.算法原理

1.1 漩涡模型

漩涡模型如图1所示:对于匀速圆周运动的物体,圆的半径( r r r)等于物体质量( m m m)与速度平方乘以向心力( F c Fc Fc)的乘积。此外,质量和离心力,以及相邻漩涡和物体之间的相互作用,导致了这种牵引和吸引的阻力和偏差。首先,我们把算法的总体划分为 N W h N_{Wh} NWh ,每个组的最佳成员代表了漩涡的牵引强度。将各组最佳成员设置在相应漩涡的中心,形成孔洞。以及漩涡中心的牵引力。团队中最好的成员试图统一粒子的位置和他们的漩涡中心(团队中最好的成员的位置) ,并把他们拉进洞里。围绕在物体周围的漩涡在物体的相反方向向漩涡的洞(群体中最好的成员)作出一个特定的距离,以某种方式减少了牵引力和向心力,并使它远离漩涡的中心。离心力可能会对向心力造成不良影响及/或破坏或改变物件。而且,较大和较强的漩涡会根据方向和距离对较小和较弱的漩涡进行拉力或推力,相互影响各自的位置,改变其他漩涡的位置。在下文中,根据上述段落介绍了该算法的实现和性能步骤,并对其进行了建模:

请添加图片描述

图1.漩涡模型

1.2漩涡的形成

首先将算法的初始种群 X 0 X^0 X0平均分配给 N p N_p Np组漩涡集,然后将每个漩涡集中最强的成员视为拉动对象的漩涡.。

1.3 漩涡对其内在和其他漩涡的影响

每个漩涡( W h Wh Wh)充当一个吸水井或者吸水洞,并且倾向于通过在它们上面施加一个向心力来统一其中心位置( X X X)中物体的位置,然后将它们投入到它的井中。因此,漩涡在 W h j Wh_j Whj上的局部位置,以统一物体( X i X_i Xi)和它自己的位置的方式作用,即 X i = W h j X_i= Wh_j Xi=Whj。尽管如此,其他漩涡会根据它们之间的距离( W h − W h j ) Wh-Wh_j) WhWhj)和目标值产生一些偏差( Δ X ΔX ΔX)。因此,该物体的新位置等于 X i N e w = W h j − Δ X i X_i^{New}= Wh_j-ΔX_i XiNew=WhjΔXi,其中漩涡对其物体的影响如图1所示。

如图1所示,物体( x x x)以它们特殊的角度( δ δ δ)绕着漩涡的中心移动并接近它。因此,这个角度在每一个时刻(迭代的算法)是变化的:
δ i n e w = δ i + r a n d 1 ∗ r a n d 2 ∗ π (1) \delta_i^{new}=\delta_i + rand_1*rand_2*\pi \tag{1} δinew=δi+rand1rand2π(1)
根据公式(2)计算最远和最近的漩涡,即与所有物体的最大和最小距离的漩涡。利用式(3)计算 Δ X i \Delta X_i ΔXi。利用式(4)更新位置
Δ t = f ( W h t ) ∗ ∣ W h t − s u m ( X i ) ∣ 0.5 (2) \Delta_t=f(Wh_t)*|Wh_t-sum(X_i)|^{0.5} \tag{2} Δt=f(Wht)Whtsum(Xi)0.5(2)

Δ X i = ( c o s ( δ i n e w ) ∗ r a n d ( 1 , D ) ∗ ( W h f − X i ) − s i n ( δ i n e w ) ∗ r a n d ( 1 , D ) ∗ ( W h w − X i ) ) ∗ ( 1 + ∣ c o s ( δ i n e w ) − s i n ( δ i n e w ) ∣ ) (3) \Delta X_i=(cos(\delta_i^{new})*rand(1,D)*(Wh_f-X_i)-sin(\delta_i^{new})*rand(1,D)*(Wh_w-X_i))\\ *(1+|cos(\delta_i^{new})-sin(\delta_i^{new})|)\tag{3} ΔXi=(cos(δinew)rand(1,D)(WhfXi)sin(δinew)rand(1,D)(WhwXi))(1+cos(δinew)sin(δinew))(3)

X i n e w = W h j − Δ X i (4) X_i^{new}=Wh_j-\Delta X_i\tag{4} Xinew=WhjΔXi(4)

其中 W h f Wh_f Whf W h w Wh_w Whw分别为角度 Δ t Δt Δt最小值和最大值的漩涡, δ i δi δi为对 i i i个对象的角度。

1.4 离心力

虽然向心力把移动的物体拉向它们的漩涡,离心力却把它们从相应的中心带走。根据牛顿第一运动定律,静止的物体保持静止,运动的物体保持相同的速度和方向,除非受到不平衡力的作用。离心力(或者)有时克服了向心力或者旋涡的牵引力,将物体随机转移到一个新的位置。在这里,我们模拟了离心力 F E i FE_i FEi。式(5)在决策变量的一个维度中随机发生。为了达到这个目的,首先离心力是根据物体和漩涡之间的角度来计算的见式(5),如果这个力大于一个随机值(在范围内均匀分布[0,1])时,按式(6)计算离心力。
F E i = ( ( c o s ( δ i n e w ) ) 2 ∗ ( s i n ( δ i n e w ) ) 2 ) (5) FE_i=((cos(\delta_i^{new}))^2*(sin(\delta_i^{new}))^2) \tag{5} FEi=((cos(δinew))2(sin(δinew))2)(5)

x i , p = x p m i n + r a n d ∗ ( x p m a x − x p m i n ) (6) x_{i,p}=x_p^{min}+rand*(x_p^{max}-x_p^{min}) \tag{6} xi,p=xpmin+rand(xpmaxxpmin)(6)

1.5 漩涡之间的相互作用

类似于漩涡对周围物体的影响,它们也相互作用和移动。这种效果被模拟为物体上的漩涡效果,每个漩涡倾向于拉动其他漩涡,在它们上面施加向心力,并把它们投入它们的井中(即统一考虑漩涡的位置和它自己的位置)。为了模拟这种效应,首先根据最近的漩涡的目标函数和当量的最小值计算出最近的漩涡见式(7)和式(8),式(9)用于更新漩涡的位置。
Δ t = f ( W h t ) ∗ ∣ W h t − s u m ( W h j ) ∣ (7) \Delta t=f(Wh_t)*|Wh_t-sum(Wh_j)|\tag{7} Δt=f(Wht)Whtsum(Whj)(7)

Δ W h j = r a n d ( 1 , D ) ∗ ∣ c o s ( δ j n e w ) + s i n ( δ j n e w ) ∣ ∗ ( W h f − W h j ) (8) \Delta Wh_j=rand(1,D)*|cos(\delta_j^{new})+sin(\delta_j^{new})|*(Wh_f-Wh_j)\tag{8} ΔWhj=rand(1,D)cos(δjnew)+sin(δjnew)(WhfWhj)(8)

W h j n e w = W h f − Δ W h j (9) Wh_j^{new}=Wh_f-\Delta Wh_j \tag{9} Whjnew=WhfΔWhj(9)

其中: δ j δ_j δj为第 j j j个漩涡洞的角度。

算法流程:

步骤1:设置算法参数及初始化漩涡种群。

步骤2:评估适应度值确定初始最优位置。

步骤3:按照式(1)-(9)更新漩涡的位置。

步骤4:重新评估漩涡的位置及最优漩涡值.

步骤5:判断是否满足最大迭代次数,若满足,则输出最优位置和全局最优解,否则,返回步骤3重新迭代计算。

2.算法结果

请添加图片描述

3.参考文献

[1] Mojtaba Ghasemi et al., A novel and effective optimization algorithm for global optimization and its engineering applications: Turbulent Flow of Water-based Optimization (TFWO). Engineering Applications of Artificial Intelligence.

4.Matlab