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

目录

  • 引言
  • 蚁群优化算法(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
鱼群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/173052.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python绘图库Plotly用超简单代码实现丰富的数据可视化图表

文章目录 前言Plotly 概述散点图时间序列分析 高级绘图功能散点图矩阵关系热图自定义主题 在 Plotly 图表工坊&#xff08;Plotly Chart Studio&#xff09;里编辑技术交流关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Pyt…

万字长文深入理解 cache,写出高性能代码

CACHE的一致性 Cache的一致性有这么几个层面 1. 一个CPU的icache和dcache的同步问题 2. 多个CPU各自的cache同步问题 3. CPU与设备&#xff08;其实也可能是个异构处理器&#xff0c;不过在Linux运行的CPU眼里&#xff0c;都是设备&#xff0c;都是DMA&#xff09;的cache同…

react等效memo的方法

视频教程 前端技术&#xff5c;Dan博客&#xff5c;在你写memo()之前_哔哩哔哩_bilibili 把与ExpensiveTree的无关的dom做成一个组件 第二种情况&#xff0c;color在ExpensiveTree组件的父级dom 创建一个组件&#xff0c;将state的color和input写上&#xff0c;而ExpensiveTr…

接入电商数据平台官方开放平台API接口获取商品实时信息数据,销量,评论,详情页演示

要接入电商数据平台官方开放平台API接口获取商品实时信息数据、销量、评论和详情页演示&#xff0c;需要按照以下步骤进行操作&#xff1a; 找到可用的API接口&#xff1a;首先&#xff0c;需要找到支持查询商品信息的API接口。可以在电商数据平台的官方开放平台上查找相应的AP…

springboot多环境配置

前言 在实际项目研发中&#xff0c;需要针对不同的运行环境&#xff0c;如开发环境、测试环境、生产环境等&#xff0c;每个运行环境的数据库…等配置都不相同&#xff0c;每次发布测试、更新生产都需要手动修改相关系统配置。这种方式特别麻烦&#xff0c;费时费力&#xff0…

n-皇后问题(DFS回溯)

n−皇后问题是指将 n 个皇后放在 nn的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

2023年【四川省安全员A证】复审考试及四川省安全员A证考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员A证复审考试根据新四川省安全员A证考试大纲要求&#xff0c;安全生产模拟考试一点通将四川省安全员A证模拟考试试题进行汇编&#xff0c;组成一套四川省安全员A证全真模拟考试试题&#xff0c;学员可通过…

Gitlab安装与操作

GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务。 可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能&#xff0c;能够浏览源代码&#xff0c;管理缺陷和注释。可以管理团队对仓库的…

五年程序员兼职接单的肺腑之言

不知不觉我已经参加工作&#xff0c;当一个程序员五年了&#xff0c;从一个职场菜鸟逐渐变成老油条&#xff0c;个中辛酸只有自己知道。这五年做过各种兼职接单&#xff0c;踩过不少坑&#xff0c;今天就把我在程序员接单上的一些心得体会分享给大家&#xff0c;希望能对兼职接…

【每日OJ —— 225.用队列实现栈(队列)】

每日OJ —— 225.用队列实现栈&#xff08;队列&#xff09; 1.题目&#xff1a;225.用队列实现栈&#xff08;队列&#xff09;2.解法2.1.解法讲解&#xff1a;2.1.1.算法讲解2.1.2.代码实现2.1.3.提交通过展示 1.题目&#xff1a;225.用队列实现栈&#xff08;队列&#xff0…

Jieba库——中文自然语言处理的利器

中文作为世界上最广泛使用的语言之一&#xff0c;其复杂的结构和丰富的表达方式给中文文本处理带来了挑战。为了解决这些问题&#xff0c;Python开发者开发了一系列用于处理中文文本的工具和库&#xff0c;其中最受欢迎和广泛应用的就是Jieba库。Jieba是一个开源的中文分词工具…

【SA8295P 源码分析 (三)】132 - GMSL2 协议分析 之 GPIO/SPI/I2C/UART 等通迅控制协议带宽消耗计算

【SA8295P 源码分析】132 - GMSL2 协议分析 之 GPIO/SPI/I2C/UART 等通迅控制协议带宽消耗计算 一、GPIO 透传带宽消耗计算二、SPI 通迅带宽消耗计算三、I2C 通迅带宽消耗计算四、UART 通迅带宽消耗计算系列文章汇总见:《【SA8295P 源码分析 (三)】Camera 模块 文章链接汇总 -…

基于Vue+SpringBoot的考研专业课程管理系统

项目编号&#xff1a; S 035 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S035&#xff0c;文末获取源码。} 项目编号&#xff1a;S035&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高…

ubuntu linux C/C++环境搭建

目录 前言 1.1 vim安装与配置 ​编辑 1.2 vim配置 1.3 gcc g编译器的安装 与gdb调试器的安装 1.4 写个C/C程序测试一下 1.6 vscode安装 1.7 vscode插件下载​编辑 前言 在开始C之前&#xff0c;我们需要搭建好C的开发环境&#xff0c;我这里使用的操作系统是ubuntu Linux&a…

Linux难学?大神告诉你,Linux到底该怎么自学!

文章目录 Part.1Part.2Part.3写作末尾 知乎上有一条热门问答&#xff0c;问题是“Linux为什么那么难&#xff1f;” 从问题来看&#xff0c;提问者还处在初学阶段。但他显然受困于 Linux 环境基本操作的问题&#xff0c;对操作系统本身的原理还不熟悉&#xff0c;并且对命令行工…

LeetCode热题100——动态规划

动态规划 1. 爬楼梯2. 杨辉三角3. 打家劫舍 1. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; // 题解&#xff1a;每次都有两种选择&#xff0c;1或者2 int climbStairs(int n) {if (n …

Spring Cloud Alibaba Sentinel 简单使用

Sentinel Sentinel 主要功能Sentinel 作用常见的流量控制算法计数器算法漏桶算法 令牌桶算法Sentinel 流量控制Sentinel 熔断Sentinel 基本使用添加依赖定义资源定义限流规则定义熔断规则如何判断熔断还是限流自定义 Sentinel 异常局部自定义异常全局自定义异常系统自定义异常…

网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪

01 字节跳动 招聘岗位&#xff1a;网络虚拟化高级研发工程师 职责描述&#xff1a; 1、负责字节跳动虚拟网络产品的研发&#xff0c;包括但不局限于网络VPC、NAT、LB负载均衡等&#xff1b; 2、负责字节跳动网络基础平台的研发&#xff0c;包括但不局限于网络控制面系统、容器…

JS--localStorage设置过期时间的方案(有示例)

原文网址&#xff1a;JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何使用localStorage设置数据的过期时间。 问题描述 localStorage是不支持设置过期时间的&#xff0c;cookie虽然支持设置过期时间但它存的数据量很小。所…

Redis从入门到精通(二)- 入门篇

文章目录 0. 前言1. 入门篇[【入门篇】1.1 redis 基础数据类型详解和示例](https://icepip.blog.csdn.net/article/details/134438573)[【入门篇】1.2 Redis 客户端之 Jedis 详解和示例](https://icepip.blog.csdn.net/article/details/134440061)[【入门篇】1.3 redis客户端之…