【智能优化算法】从蚁群到动物园

2023-11-21 23:28

本文主要是介绍【智能优化算法】从蚁群到动物园,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 引言
  • 蚁群优化算法(ACO)
    • ACO 机理
    • ACO 模型描述
    • ACO 移动策略
  • 粒子群优化算法(PSO)
    • PSO 机理
    • PSO 模型描述
  • 萤火虫群优化算法(GSO)
    • GSO 机理
    • GSO 模型描述
  • 群智能优化算法

引言

21世纪,人类社会已经全面迅速迈入以人工智能为引擎的智能时代。在科学研究、工程设计、经济管理、国防建设、社会生活等领域都面临着大量需要优化求解的复杂问题。

对于这些日益复杂化的优化问题建立精确的数学模型往往比较困难,因而使得基于精确模型的传统优化算法陷入了极大的困境。然而,人们从自然界的多种生物、昆虫、动物、植物等的生存、繁衍过程以及自然现象、水循环、生态平衡等过程中,发现了其中蕴含着大量的信息处理的优化机制和机理。于是人们从模拟这些优化机制、优化机理出发,提出了数以百计的不依赖被优化问题数学模型的优化算法,它们被称为元启发式算法、仿生计算、自然计算、智能计算等。这些优化算法中有些算法在一定程度上模拟了人的智能;有些算法模拟自然界中某些动物、植物生存行为的适应性、灵性、“智慧性”,因此可以统称为智能优化算法

遗传算法为开端的智能优化算法为解决缺乏精确数学模型的复杂优化问题开辟了新途径,尤其是以模拟蚁群觅食行为的蚁群优化算法模拟鸟类飞行觅食行为的粒子群优化算法为代表的群智能优化算法的提出,极大地推动了智能优化算法开发的速度、深度和广度。随着人工智能技术的快速进步,必将催生智能优化技术和智能优化算法的进一步发展,为解决复杂系统的优化问题提供更广阔的途径及强有力的工具。

本文以群智能优化算法为主题,例举数个极具代表性的相关算法。其中包括了模拟自然界微生物、群居昆虫、动物群体觅食、繁殖行为,以及动物群体的捕猎策略等对问题求解的优化算法。
同时也会简单说明一下目前群智能优化算法的研究状况,看看群智能优化算法是怎么从动物身上获取经验的,又是怎么从一个蚁群逐渐发展壮大成一个动物园。

在这里插入图片描述


蚁群优化算法(ACO)

蚁群优化(Ant Colony Optimization,ACO)算法是 1991 年由意大利 M.Dorigo 博士等提出的一种群智能优化算法,它模拟蚁群能从蚁巢到食物源找到一条最短路径的觅食行为,并成功用于求解组合优化的 TSP 问题。后来,一些研究者把它改进应用于连续优化问题。

2008年,Dorigo等又提出了一种求解连续空间优化问题的扩展蚁群优化(Extension of Ant Colony Optimization,ACOr)算法,通过引入解存储器作为信息素模型,使用了连续概率分布取代 ACO 算法中离散概率分布,将基本蚁群算法的离散概率选择方式连续化,从而将其拓展到求解连续空间优化问题。

ACO 机理

蚂蚁的觅食行为实质上是一种通过简单个体的自组织行为所体现出来的一种群体行为,具有以下两个重要特征。

  • 蚂蚁觅食的群体行为具有正反馈过程,反馈的信息是全局信息。通过反馈机制进行调整,可对系统的较优解起到自增强的作用。从而使问题的解向着全局最优的方向演变,最终获得全局最优解。
  • 具有分布并行计算能力,可使算法全面地在多点同时进行解的搜索,有效地降低陷入局部最优解的可能性。

ACO 模型描述

ACO符号定义如下:

NoteMeaningpostscript
m蚂蚁数目
b i ( t ) b_i(t) bi(t) t t t 时刻位于城市 i i i 的蚂蚁个数 m = ∑ i = 1 n b i ( t ) m= \sum_{i=1}^{n}b_i(t) m=i=1nbi(t)
d i j d_{ij} dij城市 i i i j j j 的距离
η i j \eta_{ij} ηij路径 ( i , j ) (i,j) (ij)的能见度,反映由城市 i i i 转移到 j j j 的启发程度 η i , j = 1 d i , j \eta_{i,j}=\frac{1}{d_{i,j}} ηi,j=di,j1
τ i j \tau_{ij} τij路径 ( i , j ) (i,j) (i,j)间的信息素强度
△ i j \triangle ij ij蚂蚁 k k k ( i , j ) (i,j) (i,j)路径上单位长度留下的信息素量
p i j k p^k_{ij} pijk蚂蚁 k k k i → j i\rightarrow j ij 转移的概率, j j j 是尚未访问的城市

蚂蚁的动作规定:

  • i → j i \rightarrow j ij完成一次循环后在路径 ( i , j ) (i,j) (i,j) 上释放信息素
  • 蚂蚁以一定概率选择下一个要访问的城市,该概率是城市 i i i j j j 之间路径存在信息素轨迹量的函数。
  • 不允许蚂蚁访问已访问过的城市(TSP 问题所要求)。

ACO 移动策略

受信息素启发选择路径采用随机比例规则,在 t t t 时刻,蚂蚁 k k k 在城市 i i i ,选择城市 j j j 的转移概率 p i j k ( t ) p^k_{ij}(t) pijk(t)为: p i j k ( t ) = { τ i j α ( t ) ⋅ η i j β ( t ) ∑ s ∈ a l l o w e d k τ i s α ( t ) ⋅ η i s β ( t ) j ∈ a l l o w e d k 0 o t h e r w i s e p^k_{ij}(t) = \begin{cases} \frac{\tau_{ij}^\alpha (t)\cdot \eta_{ij}^\beta (t)}{\sum_{s\in allowed_k} \tau_{is}^\alpha (t)\cdot \eta_{is}^\beta (t) } & j\in allowed_k \\ 0 & otherwise \\ \end{cases} pijk(t)= sallowedkτisα(t)ηisβ(t)τijα(t)ηijβ(t)0jallowedkotherwise该式子表明转移概率 p i j k ( t ) p^k_{ij}(t) pijk(t) τ i j α ( t ) ⋅ η i j β ( t ) \tau_{ij}^\alpha (t)\cdot \eta_{ij}^\beta (t) τijα(t)ηijβ(t) 成正比。 α , β \alpha ,\beta α,β 分别反映蚂蚁在运动中所积累的信息和启发信息在选择路径中的相对重要性。

经过 n 时刻,蚂蚁完成一次循环,各路径上信息素调整为: ♣ τ i j ( t + 1 ) = ρ ⋅ τ i j ( t ) + △ τ i j ( t , t + 1 ) △ τ i j ( t , t + 1 ) = ∑ k = 1 m △ τ i j k ( t , t + 1 ) \clubsuit \quad \tau_{ij}(t+1)=\rho \cdot \tau_{ij}(t)+\triangle \tau_{ij}(t,t+1) \\ \triangle \tau_{ij}(t,t+1)=\sum_{k=1}^{m} \triangle \tau_{ij}^k(t,t+1) τij(t+1)=ρτij(t)+τij(t,t+1)τij(t,t+1)=k=1mτijk(t,t+1) △ τ i j k ( t , t + 1 ) \triangle \tau_{ij}^k(t,t+1) τijk(t,t+1) 是第 k k k 只蚂蚁在 ( t , t + 1 ) (t,t+1) (t,t+1) 时刻留在路径 ( i , j ) (i,j) (i,j) 上的信息素量
△ τ i j ( t , t + 1 ) \triangle \tau_{ij}(t,t+1) τij(t,t+1) 为本次循环路径 ( i , j ) (i,j) (i,j) 的信息素量的增量
ρ \rho ρ 为路径上信息素的挥发系数 (通常取 ρ < 1 \rho<1 ρ<1 )。

根据 △ τ i j , △ τ i j k \triangle \tau_{ij},\triangle \tau_{ij}^k τij,τijk p i j k ( t ) p^k_{ij}(t) pijk(t) 的表达形式的不同,Dorigo 定义了以下3种不同的蚂蚁系统模型。

系统名称表达方式
蚁密系统
(Ant Density System)
△ τ i j k ( t , t + 1 ) = { Q 第 k 只蚂蚁在 ( t , t + 1 ) 间经过路径 ( i , j ) 0 o t h e r w i s e \triangle \tau_{ij}^k(t,t+1) = \begin{cases} Q & 第k只蚂蚁在(t,t+1)间经过路径(i,j) \\ 0 & otherwise \end{cases} τijk(tt+1)={Q0k只蚂蚁在(t,t+1)间经过路径(i,j)otherwise
蚁量系统
(Ant Quantity System)
△ τ i j k ( t , t + 1 ) = { Q d i j 第 k 只蚂蚁在 ( t , t + 1 ) 间经过路径 ( i , j ) 0 o t h e r w i s e \triangle \tau_{ij}^k(t,t+1) = \begin{cases} \frac{Q}{d_{ij}} & 第k只蚂蚁在(t,t+1)间经过路径(i,j) \\ 0 & otherwise \end{cases} τijk(tt+1)={dijQ0k只蚂蚁在(t,t+1)间经过路径(i,j)otherwise
蚁周系统
(Ant Cycle System)
△ τ i j k ( t , t + n ) = { Q L k 蚂蚁 k 经过 n 步路径 ( i , j ) 0 o t h e r w i s e \triangle \tau_{ij}^k(t,t+n) = \begin{cases} \frac{Q}{L_{k}} & 蚂蚁k经过 n 步路径(i,j) \\ 0 & otherwise \end{cases} τijk(tt+n)={LkQ0蚂蚁k经过n步路径(i,j)otherwise
  • Q Q Q 为一只蚂蚁经过路径 ( i , j ) (i,j) (i,j)单位长度上释放的信息素量
  • Q d i j \frac{Q}{d_{ij}} dijQ为一只蚂蚁在经过路径 ( i , j ) (i,j) (i,j)单位长度上释放的信息素量
  • Q L k \frac{Q}{L_{k}} LkQ为第 k k k 只蚂蚁在(t,t+n)经过 n 步的一次循环中走过路径 ( i , j ) (i,j) (i,j)长度 L k L_k Lk 所释放的信息素量。
  • 蚁密、蚁量系统模型中,利用的是局部信息
  • 蚁周系统利用的是整体信息,蚁周系统模型也被称为基本蚁群算法。其更新公式由 ♣ \clubsuit 变为 τ i j ( t , t + n ) = ρ ⋅ τ i j ( t ) + △ τ i j ( t , t + n ) △ τ i j ( t , t + n ) = ∑ k = 1 m △ τ i j k ( t , t + n ) \tau_{ij}(t,t+n)=\rho \cdot \tau_{ij}(t)+\triangle \tau_{ij}(t,t+n) \\ \triangle \tau_{ij}(t,t+n)=\sum_{k=1}^{m} \triangle \tau_{ij}^k(t,t+n) τij(t,t+n)=ρτij(t)+τij(t,t+n)τij(t,t+n)=k=1mτijk(t,t+n)

在这里插入图片描述


粒子群优化算法(PSO)

粒子群优化(Particle Swarm Optimization,PSO)算法是在1995 年由美国社会心理学家 Kennedy 和电气工程师 Eberhart 共同提出的,又称为粒群算法、微粒群算法。

最初PSO算法模拟鸟群捕食的群体智能行为,它是以研究连续变量最优化问题为背景提出的。虽然PSO算法是针对连续优化问题而提出的,但通过二进制编码可以得到离散变量的PSO形式。因此,它也可以用于离散系统的组合优化问题求解,如用于求解 TSP 问题等。PSO还可以用于求解多目标优化、带约束优化、多峰函数优化、聚类、调度与规划、控制器参数优化等问题。

PSO 机理

PSO 利用生物学家 Heppner 的生物群体模型,模拟鸟类觅食等群体智能行为的进化算法。鸟类在飞行过程中是相互影响的,当一只鸟飞离鸟群而飞向栖息地时,将影响其他鸟也飞向栖息地。鸟类寻找栖息地的过程与对一个特定问题寻找解的过程相似。鸟的个体要与周围同类比较,模仿优秀个体的行为,因此可利用其解决优化问题,而人类的决策过程使用了两种重要的知识:一类是自己的经验;二是他人的经验。这样有助于提高决策的科学性。

PSO 设每个优化问题的解是搜索空间中的一只鸟,把鸟视为空间中的一个没有重量和体积的理想化“质点”,称为“粒子”或“微粒”,每个粒子都有一个由被优化函数所决定的适应度值,还有一个速度决定它们的飞行方向和距离。然后粒子通过追随当前的最优粒子在解空间中搜索最优解。

PSO 模型描述

n n n 维搜索空间中,PSO的变量如下表所示

NoteMeaning
X i = ( x i 1 , x i 2 , . . . , x i n ) X_i=(x_{i1},x_{i2},...,x_{in}) Xi=(xi1,xi2,...,xin)粒子群的当前位置
V i = ( v i 1 , v i 2 , . . . , v i n ) V_i=(v_{i1},v_{i2},...,v_{in}) Vi=(vi1,vi2,...,vin)粒子群的当前飞行速度
P i = ( p i 1 , p i 2 , . . . , p i n ) P_i=(p_{i1},p_{i2},...,p_{in}) Pi=(pi1,pi2,...,pin)粒子群所经历的最好位置
C 1 , C 2 C_1,C_2 C1,C2加速度常数
r 1 j , r 2 j r_{1j},r_{2j} r1j,r2j两个相互独立的随机数
P g ( t ) P_g(t) Pg(t)全局最好粒子的位置

对于最小化问题,若 f ( X ) f(X) f(X) 为最小化的目标函数,则微粒 i i i 的当前最好位置由下式确定 P i ( t + 1 ) = { P i ( t ) f ( X i ( t + 1 ) ) ≥ f ( P i ( t ) ) X i ( t + 1 ) f ( X i ( t + 1 ) ) < f ( P i ( t ) ) P_i(t+1) = \begin{cases} P_i(t) & f(X_i(t+1)) \ge f(P_i(t)) \\ X_i(t+1) & f(X_i(t+1))< f(P_i(t)) \end{cases} Pi(t+1)={Pi(t)Xi(t+1)f(Xi(t+1))f(Pi(t))f(Xi(t+1))<f(Pi(t))设群体中的粒子数为 S S S ,群体中所有粒子所经历过的最好位置为 P g ( t ) P_g(t) Pg(t) ,称为全局最好位置: f ( P g ( t ) ) = min ⁡ { f ( P 1 ( t ) ) , f ( P 2 ( t ) ) , . . . , f ( P s ( t ) ) } f(P_g(t))=\min \{ f(P_1(t)),f(P_2(t)),...,f(P_s(t))\} f(Pg(t))=min{f(P1(t)),f(P2(t)),...,f(Ps(t))}基本粒子 i i i 的更新方程可以描述为: v i j ( t + 1 ) = v i j ( t ) + C 1 ⋅ r 1 j ( t ) ⋅ ( P i j ( t ) − x i j ( t ) ) + C 2 ⋅ r 2 j ⋅ ( P g j ( t ) − x i j ( t ) ) x i j ( t + 1 ) = x i j ( t ) + v i j ( t + 1 ) v_{ij}(t+1)=v_{ij}(t)+C_1\cdot r_{1j}(t) \cdot (P_{ij}(t)-x_{ij}(t))+C_2\cdot r_{2j}\cdot (P_{gj}(t)-x_{ij}(t))\\ x_{ij}(t+1)=x_{ij}(t)+v_{ij}(t+1) vij(t+1)=vij(t)+C1r1j(t)(Pij(t)xij(t))+C2r2j(Pgj(t)xij(t))xij(t+1)=xij(t)+vij(t+1)上述式子表示粒子 i i i 在搜索空间中以一定的速度飞行,这个速度要根据自身的飞行经历和同伴的飞行经历进行动态调整。

在这里插入图片描述在这里插入图片描述


萤火虫群优化算法(GSO)

萤火虫群优化(Glowworm Swarm Optimization,GSO)算法是 2005 年由印度学者 Krishnanand 和 Ghose 在研究改进蚁群算法求解连续型最优化问题时提出的,并将其成功用于机器人群体协作。

该算法思想来源于萤火虫求偶行为中荧光素越高,吸引力越强的生物习性。他们对萤火虫群优化算法的动态决策做了改进,提出将萤火虫群优化算法用于多个移动信号源的追踪、多极值函数优化,并对该算法的收敛性理论做了研究。

GSO 机理

萤火虫通过闪光吸引异性求偶和猎取食物。萤火虫发的光越亮越绚丽,越能吸引同伴行为或食物。此外,闪烁也可以作为一个保护预警机制。有节奏的闪光,闪烁的速率与时间成为了吸引异性的信号。

  • 萤火虫的闪光仅在一定的距离范围内可见。一方面是由于光强度和距离的平方存在反比关系;另一方面是由于空气会吸收光。
  • 萤火虫个体的荧光素大小与自己所在位置的目标函数有关,荧光素越大、越亮的萤火虫表示它所在的位置越好,即有较好的目标值。
  • 萤火虫会在决策域内寻找邻居,并且荧光素越大的邻居拥有越高的吸引力,吸引萤火虫往这个方向移动,每一次移动的方向会随着选择的邻居不同而改变。
  • 决策域的大小会受到邻居数量的影响:邻居密度越小,萤火虫的决策半径会加大以便寻找更多的邻居;邻居密度越大,它的决策半径则会缩小。

GSO 模型描述

设有 D D D 维目标搜索空间,GSO变量如下

NoteMeaning
l i ( t ) l_i(t) li(t) t t t 代第 i i i 只萤火虫携带的荧光素值
x i ( t ) x_i(t) xi(t) t t t 代第 i i i 只萤火虫的位置
J ( x ) J(x) J(x)计算当前位置的荧光素值函数
N i ( t ) N_i(t) Ni(t) i i i 只萤火虫的邻域集合
n t n_t nt控制邻域范围内邻居萤火虫个数的参数
r d i ( 0 < r d i < r s ) r_d^i(0<r_d^i<r_s) rdi(0<rdi<rs) i i i 只萤火虫的决策域, r s r_s rs为最大感知半径
ρ \rho ρ控制荧光素值的参数
γ \gamma γ荧光素更新率
s s s移动步长

GSO 算法每一次迭代都由两个阶段组成:第一阶段是荧光素更新阶段;第二阶段是萤火虫的运动阶段。其具体算法包括萤火虫的初始分布、荧光素更新、路径选择、位置更新和决策域更新。

荧光素更新: l i ( t ) = ( 1 − ρ ) l i ( t − 1 ) + γ J ( x i ( t ) ) l_i(t)=(1-\rho)l_i(t-1)+\gamma J(x_i(t)) li(t)=(1ρ)li(t1)+γJ(xi(t))
每个个体在其动态决策域半径 r d i r_d^i rdi 之内,选择荧光素值比自己高的个体组成其邻域集 N i ( t ) = j : d i j ( t ) < d d i ( t ) ; l i ( t ) < l j ( t ) N_i(t)={j:d_{ij}(t)<d_d^i(t);\quad l_i(t)<l_j(t)} Ni(t)=j:dij(t)<ddi(t);li(t)<lj(t)即当萤火虫 j j j 的荧光素值大于萤火虫 i i i 的荧光素,且萤火虫 j j j 与萤火虫 i i i 之间的距离小于萤火虫 i i i 所在邻域的决策范围时,将萤火虫 j j j 划分到萤火虫 i i i 所在的邻域。移向邻域集 N i ( t ) N_i(t) Ni(t) 内个体 j j j 的路径选择概率为: p i j ( t ) = l j ( t ) − l i ( t ) ∑ k ∈ N i ( t ) ( l k ( t ) − l i ( t ) ) p_{ij}(t)=\frac{l_j(t)-l_i(t)}{\sum_{k\in N_i(t)}(l_k(t)-l_i(t))} pij(t)=kNi(t)(lk(t)li(t))lj(t)li(t)位置更新: x i ( t + 1 ) = x i ( t ) + s ( x j ( t ) − x i ( t ) ∣ ∣ x j ( t ) − x i ( t ) ∣ ∣ ) x_i(t+1)=x_i(t)+s(\frac{x_j(t)-x_i(t)}{||x_j(t)-x_i(t)||}) xi(t+1)=xi(t)+s(∣∣xj(t)xi(t)∣∣xj(t)xi(t)) ∣ ∣ ⋅ ∣ ∣ ||·|| ∣∣∣∣为标准欧氏距离运算符。
决策域更新: r d i ( t + 1 ) = min ⁡ { r s , max ⁡ { 0 , r d i ( t ) + β ( n t − ∣ N i ( t ) ∣ ) } } r_d^i(t+1)=\min \{ r_s,\max\{ 0,r_d^i(t)+\beta(n_t-|N_i(t)|)\}\} rdi(t+1)=min{rs,max{0,rdi(t)+β(ntNi(t))}}

萤火虫群优化算法的实现步骤如下:

  1. 初始化各个参数。控制萤火虫邻居数目的邻域阈值 n t n_t nt;萤火虫移动的步长 s s s;初始荧光素的值 l 0 l_0 l0; 控制邻居变化范围的参数 β \beta β;控制荧光素值的参数 ρ \rho ρ;光素更新率 γ \gamma γ ;初始化萤火虫的位置。
  2. 对每一个萤火虫 i i i 更新荧光素的值
  3. 进入移动阶段,选出符合条件的萤火虫
  4. 用轮盘赌法选择出目标函数值较大的萤火虫 j ( j ∈ N i ( t ) ) j(j\in N_i(t)) j(jNi(t))
  5. 更新萤火虫的位置
  6. 更新决策域
  7. 一次迭代完成,进入下一次迭代,判断是否满足终止条件,满足退出循环;否则转到步骤2。

在这里插入图片描述


群智能优化算法

模拟动物群体(或个体)的觅食、繁殖、猎等行为的群智能优化算法在智能优化算法中占有很大篇幅。这不仅因为自然界的动物种类繁多,而且还因为各类动物的习性、生存行为各异有的生存在地下巢穴中,有的在地上爬,有的在空中飞,有的在水中游;有小到人眼无法看见的病毒,也有重达几吨的庞然大物等。
人们通过观察不同的动物,设计了非常多的群智能优化算法,截至目前,大约有数百种从动物身上汲取经验思想的算法,更多有趣的算法思想也在不断涌现。本文篇幅有限,加之作者对文献的搜集精力有限,这里罗列了数篇相关的群智能算法链接,有兴趣的小伙伴可以下载看看。

动物文章
蚁狮The Ant Lion Optimizer
蜂群采蜜An idea based on honey bee swarm for numerical optimization
蜜蜂交配MBO: marriage in honey bees optimization-a
Haplometrosis polygynous swarming approach
果蝇A new fruit fly optimization algorithm:
taking the financial distress model as an example
蝴蝶觅食Butterfly optimization algorithm: a novel approach for global optimization
蝴蝶交配Butterfly Mating Optimization
蜻蜓Dragonfly algorithm: a new meta-heuristic optimization technique
for solving single-objective, discrete, and multi-objective problems
蜉蝣A mayfly optimization algorithm
蚱蜢Grasshopper Optimisation Algorithm: Theory and application
飞蛾扑火Moth-flame optimization algorithm:
A novel nature-inspired heuristic paradigm
蛾群Optimal power flow using moth swarm algorithm
群居蜘蛛A swarm optimization algorithm inspired in the behavior of the social-spider
蟑螂Cockroach Swarm Optimization Algorithm for TSP
天牛BAS: Beetle Antennae Search Algorithm for Optimization Problems
蚯蚓Earthworm optimisation algorithm: a bio-inspired metaheuristic algorithm
for global optimisation problems
布谷鸟Cuckoo Search via Lévy flights
候鸟Migrating Birds Optimization: A new metaheuristic approach
and its performance on quadratic assignment problem
雁群GSO: An Improved PSO Based on Geese Flight Theory
燕群Swallow swarm optimization algorithm: a new method to optimization
麻雀A novel swarm intelligence optimization approach: sparrow search algorithm
鸽群Pigeon-inspired optimization: a new swarm intelligence optimizer
for air robot path planning
鸟群A new bio-inspired optimisation algorithm: Bird Swarm Algorithm
乌鸦A novel metaheuristic method for solving constrained
engineering optimization problems: crow search algorithm
缎蓝园丁鸟Satin bowerbird optimizer: A new optimization algorithm to
optimize ANFIS for software development effort estimation
海鸥Seagull optimization algorithm: Theory and its applications for
large-scale industrial engineering problems
哈里斯鹰Harris hawks optimization: Algorithm and applications
秃鹰Novel meta-heuristic bald eagle search optimisation algorithm
蝙蝠Bat algorithm: literature review and applications
飞鼠A novel nature-inspired algorithm for optimization: Squirrel search algorithm
青蛙Shuffled frog-leaping algorithm:
a memetic meta-heuristic for discrete optimization
鱼群

这篇关于【智能优化算法】从蚁群到动物园的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/405839

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time