改进的白鲸优化算法

news2024/9/24 11:28:34

改进的白鲸优化算法

  • 一、算法灵感
  • 二、算法介绍
    • 2.1 初始化
    • 2.2 探索阶段
    • 2.3 开发阶段
    • 2.4 鲸落阶段
  • 三、改进的白鲸优化算法
    • 3.1 集体行动策略
    • 3.2 小孔成像策略
    • 3.3 二次插值策略
    • 3.4 IBWO伪代码

一、算法灵感

  白鲸优化算法(Beluga whale optimization, BWO)是2022年提出的一种元启发式优化算法,其灵感来源于白鲸的生活行为。白鲸以成年鲸的纯白色而闻名,是高度群居的动物,它们可以成群聚集,有2到25个成员,平均有10个成员。与其他元启发式方法类似,BWO包含探索阶段和开发阶段,此外该算法还模拟了生物界中存在的鲸落现象。

二、算法介绍

2.1 初始化

  探索阶段通过随机选择白鲸,保证了设计空间中的全局搜索能力,开发阶段控制着设计空间中的局部搜索。为了模拟行为,白鲸被视为搜索代理,通过改变位置向量在搜索空间中移动。此外,在BWO中考虑了鲸鱼坠落的概率,它改变了白鲸的位置。
  由于BWO基于种群的机制,白鲸被视为搜索代理,而每条白鲸都是一个候选解决方案,并在优化过程中进行更新。矩阵到搜索代理位置的矩阵被建模为:
X = [ x 1 , 1 x 1 , 2 . . . x 1 , d x 2 , 1 x 2 , 2 . . . x 2 , d ⋮ ⋮ ⋮ ⋮ x n , 1 x n , 2 . . . x n , d ] (1) X{\rm{ = }}\left[ \begin{aligned} {{x_{1,1}}} & {{x_{1,2}}} & {...} & {{x_{1,d}}} \cr {{x_{2,1}}} & {{x_{2,2}}} & {...} & {{x_{2,d}}} \cr \vdots & \vdots & \vdots & \vdots \cr {{x_{n,1}}} & {{x_{n,2}}} & {...} & {{x_{n,d}}} \cr \end{aligned} \right]\tag{1} X= x1,1x2,1xn,1x1,2x2,2xn,2.........x1,dx2,dxn,d (1)其中, n n n 为白鲸的种群大小, d d d 为设计变量的维数。对于所有的白鲸,相应的适应度值存储如下:
F X = [ f ( x 1 , 1 , x 1 , 2 , . . . , x 1 , d ) f ( x 2 , 1 , x 2 , 2 , . . . , x 2 , d ) ⋮ f ( x n , 1 , x n , 2 , . . . , x n , d ) ] (2) {F_X} = \left[ \begin{aligned} {f({x_{1,1}},{x_{1,2}},...,{x_{1,d}})} \cr {f({x_{2,1}},{x_{2,2}},...,{x_{2,d}})} \cr \vdots \cr {f({x_{n,1}},{x_{n,2}},...,{x_{n,d}})} \cr \end{aligned} \right]\tag{2} FX= f(x1,1,x1,2,...,x1,d)f(x2,1,x2,2,...,x2,d)f(xn,1,xn,2,...,xn,d) (2)  BWO算法可以从探索转向开发,这取决于平衡因子 B f B_f Bf ,其数学模型为:
B f = B 0 ( 1 − t 2 T ) (3) {B_f} = {B_0}(1 - {t \over {2T}})\tag{3} Bf=B0(12Tt)(3)其中, t t t 为当前迭代, T T T 为最大迭代数, B 0 B_0 B0 在每次迭代时在 ( 0 , 1 ) (0,1) (0,1) 之间随机变化。勘探阶段发生在平衡因子 B f > 0.5 B_f>0.5 Bf>0.5 ,而开发阶段发生在 B f B_f Bf ≤0.5。随着迭代 T T T 的增加, B f B_f Bf 的波动范围从 ( 0 , 1 ) (0,1) (0,1) 减小到 ( 0 , 0.5 ) (0,0.5) (0,0.5),说明开发和勘探阶段的概率发生了显著变化,而开发阶段的概率随着迭代 T T T 的不断增加而增加。

2.2 探索阶段

  BWO的探索阶段是通过考虑白鲸的游泳行为来建立的。白鲸可以在不同的姿势下进行社会性行为,如两对白鲸以同步或镜像的方式紧密地游泳。因此,搜索代理的位置由一对白鲸的游泳决定,白鲸的位置更新如下:
{ X i , j t + 1 = X i , p j t + ( X r , p 1 t − X i , p j t ) ( 1 + r 1 ) s i n ( 2 π r 2 ) , j = e v e n X i , j t + 1 = X i , p j t + ( X r , p 1 t − X i , p j t ) ( 1 + r 1 ) cos ⁡ ( 2 π r 2 ) , j = o d d (4) \left\{ \begin{aligned} &X_{i,j}^{t + 1} = X_{i,{p_j}}^t + (X_{r,{p_1}}^t - X_{i,{p_j}}^t)(1 + {r_1})sin(2\pi {r_2})&&,j=even \cr &X_{i,j}^{t + 1} = X_{i,{p_j}}^t + (X_{r,{p_1}}^t - X_{i,{p_j}}^t)(1 + {r_1})\cos (2\pi {r_2})&&,j= odd \cr \end{aligned} \right.\tag{4} {Xi,jt+1=Xi,pjt+(Xr,p1tXi,pjt)(1+r1)sin(2πr2)Xi,jt+1=Xi,pjt+(Xr,p1tXi,pjt)(1+r1)cos(2πr2),j=even,j=odd(4)其中, t t t 为当前迭代次数, X i , j t + 1 X_{i,j}^{t + 1} Xi,jt+1 是第 i i i 条白鲸在第 j j j 维上的新位置, P j ( j = 12... , d ) {P_j}(j = 12...,d) Pj(j=12...,d) 是从 d d d 维中随机选择的, X i , j t X_{i,j}^t Xi,jt 是第 i i i 条白鲸在 j j j 维度上的位置, X i , p j t X_{i,{p_j}}^t Xi,pjt X r , p 1 t X_{r,{p_1}}^t Xr,p1t 是第 i i i 和第 r r r 条白鲸( r r r 代表随机选择的白鲸)的当前位置, r 1 r_1 r1 r 2 r_2 r2 是范围在 ( 0 , 1 ) (0,1) (0,1) 的随机数,用于增强勘探阶段的随机算子。 s i n ( 2 π r 2 ) sin(2πr_2) sin(2πr2) c o s ( 2 π r 2 ) cos(2πr_2) cos(2πr2) 用于平均鱼鳍之间的随机数。根据奇数和偶数选择的维度,更新后的位置反映了白鲸在游泳或潜水时的同步或镜像行为。

2.3 开发阶段

  BWO的开发阶段的灵感来自于白鲸的捕食行为。白鲸可以根据相邻白鲸的位置,合作觅食和移动。因此,白鲸通过分享彼此的位置信息来猎物,考虑最好的候选解和其他解。在BWO的开发阶段引入了Levy飞行的策略,以提高收敛性。我们假设它们可以用Levy飞行策略捕捉猎物,其数学模型表示为:
X i t + 1 = r 3 X b e s t t − r 4 X i t + C 1 ⋅ L F ⋅ ( X r t − X i t ) (5) X_i^{t + 1} = {r_3}X_{best}^t - {r_4}X_i^t + {C_1} \cdot {L_F} \cdot (X_r^t - X_i^t)\tag{5} Xit+1=r3Xbesttr4Xit+C1LF(XrtXit)(5)其中, T T T 为当前迭代次数, X i t X_i^t Xit X r t X_r^t Xrt 是第 i i i 条白鲸和一条随机的白鲸的当前位置, X i t + 1 X_i^{t + 1} Xit+1 是第 i i i 条白鲸的新位置, X b e s t t X_{best}^t Xbestt 是鲸鱼中最佳位置, r 3 r_3 r3 r 4 r_4 r4 是范围在 ( 0 , 1 ) (0,1) (0,1) 的随机数, C 1 = 2 r 4 ( 1 − t / T m a x ) {C_1} = 2{r_4}(1 - t/{T_{max}}) C1=2r4(1t/Tmax) 用于测量Levy飞行强度的随机跳跃强度。
   L F L_F LF 为Levy飞行函数,其计算方法如下:
L F = 0.05 × u × σ ∣ v ∣ 1 / β (6) {L_F} = 0.05 \times {{u \times \sigma } \over {{{\left| v \right|}^{1/\beta }}}}\tag{6} LF=0.05×v1/βu×σ(6) σ = ( Γ ( 1 + β ) × s i n ( π β / 2 ) Γ ( ( 1 + β ) / 2 ) × β × 2 ( β − 1 ) / 2 ) 1 / β (7) \sigma = {\left( {{{\Gamma (1 + \beta ) \times sin(\pi \beta /2)} \over {\Gamma ((1 + \beta )/2) \times \beta \times {2^{(\beta - 1)/2}}}}} \right)^{1/\beta }}\tag{7} σ=(Γ((1+β)/2)×β×2(β1)/2Γ(1+β)×sin(πβ/2))1/β(7)其中, u u u v v v 是正态分布的随机数, β β β 是默认的常数,等于 1.5 1.5 1.5

2.4 鲸落阶段

  在迁徙和觅食的过程中,白鲸受到了来自虎鲸、北极熊和人类的威胁。大多数白鲸都很聪明,可以通过彼此分享信息来逃避威胁。然而,少数白鲸没有幸存下来,掉进了海底。这种现象被称为“鲸鱼坠落”,喂养了大量的生物。大量的鲨鱼和无脊椎动物聚集在一起喂养鲸鱼的尸体,暴露的死鲸鱼的骨头和尸体吸引了大量的毛发甲壳类动物。最后,骨骼被细菌和珊瑚分解或占据了几十年。
  为了模拟每次迭代中鲸落的行为,我们选择鲸鱼从种群中掉落的概率作为我们主观的假设,以此模拟群体中的微小变化。我们假设这些白鲸要么转移到其他地方,要么被击落并掉入深海。为了保证种群数量不变,我们利用白鲸的位置和鲸鱼下降的步长来建立更新的位置。该数学模型表示为:
X i t + 1 = r 5 X i t − r 6 X r t + r 7 X s t e p (8) X_i^{t + 1} = {r_5}X_i^t - {r_6}X_r^t + {r_7}{X_{step}}\tag{8} Xit+1=r5Xitr6Xrt+r7Xstep(8)其中, r 5 r_5 r5 r 6 r_6 r6 r 7 r_7 r7 ( 0 , 1 ) (0,1) (0,1) 之间的随机数, X s t e p X_{step} Xstep 是鲸鱼坠落的步长,确定为:
X s t e p = ( u b − l b ) e x p ( − C 2 t T ) (9) {X_{step}} = ({u_b} - {l_b})exp( - {C_2}{t \over T})\tag{9} Xstep=(ublb)exp(C2Tt)(9)其中, C 2 C_2 C2 为与鲸鱼下降概率和种群大小相关的步长因子( C 2 = 2 W f × n C_2=2W_f ×n C2=2Wf×n ), u b ub ub l b lb lb 分别为变量的上界和下界。可以看出,步长受设计变量、迭代次数和最大迭代数的边界的影响。
  在这个模型中,鲸鱼坠落的概率( W f W_f Wf )被计算为一个线性函数:
W f = 0.1 − 0.05 t / T (10) {W_f} = 0.1 - 0.05t/T\tag{10} Wf=0.10.05t/T(10)  鲸鱼坠落的概率从初始迭代的 0.1 0.1 0.1 下降到最后一次迭代的 0.05 0.05 0.05,说明当白鲸在优化过程中更接近食物源时,白鲸的危险降低。

三、改进的白鲸优化算法

3.1 集体行动策略

  白鲸是高度社会化的动物,捕食与迁徙等行为都是由团体所共同完成的。白鲸的声音种类繁多,甚至可以在水面上听到。它们使用许多不同的咔嗒声、啁啾声和口哨声(范围从 3-9 kHz)相互交流,但它们也使用非常独特的“铃铛音”,这是只有这种鲸鱼独有的。它们能够借助其自身独特的声音来从而共享自身所在的位置,同时躲避天敌虎鲸。因为鲸鱼的食量很大,在捕食的同时不能与同伴的位置相隔太近,否则会导致获取的食物不够。但是也不能相隔太远,否则会受到来自天敌虎鲸的威胁。本文选用Wk作为临界值来达到既能满足自己食物的需要同时也能尽量减少来自天敌虎鲸的威胁,同时随着迭代次数的增加,搜索代理白鲸也会逐步成长,Wk也会随着迭代次数的增加而增加,Wk的表达式如(11)所示,Wt为白鲸之间的最小距离,本文中定为0.35。同时我们也假设它们可以用Levy飞行策略捕捉猎物,其数学模型表示为:
W K = t 5 T + W t (11) {W_K} = {t \over {5T}} + {W_t}\tag{11} WK=5Tt+Wt(11) X i t + 1 = X i t + L F ⋅ X b e s t t − W K ⋅ ( X r t + X i t ) ) (12) X_i^{t{\rm{ + 1}}}{\rm{ = }}X_i^t{\rm{ + }}{L_F} \cdot X_{best}^t - {W_K} \cdot (X_r^t{\rm{ + }}X_i^t))\tag{12} Xit+1=Xit+LFXbesttWK(Xrt+Xit))(12)其中T为当前迭代次数, X i t X_i^t Xit X r t X_r^t Xrt是第i条白鲸和一条随机的白鲸的当前位置, X i t + 1 X_i^{t + 1} Xit+1是第i条白鲸的新位置, X b e s t t X_{best}^t Xbestt是鲸鱼中最佳位置。
在这里插入图片描述

Figure 1. 策略执行之前

在这里插入图片描述

Figure 2. 策略执行之后

3.2 小孔成像策略

  如果种群个体在当前位置的相反位置产生一个相反的个体,则这两个个体就更容易接近最优解,因此只需要进行少量的操作就能起到不错的效果。2005年,Tizhoosh提出了反向学习策略,其原理为根据已知解,生成一个反向解,对比反向解,选择更好的解。Dynamic pinhole imaging strategy是2022年由Li提出的一种通用策略,模仿了光学中的针孔成像理论。与普通的反向学习策略相比,针孔成像理论更准确,可以产生更多样化的对应点。图3为一个典型的针孔成像理论模型。将其应用于总体的搜索空间,可以得到以下数学模型:
X b e s t i , j t − ( U b i , j + L b i , j ) / 2 ( U b i , j + L b i , j ) / 2 − X i , j t + 1 = L p L − p (13) {{Xbest_{_{i,j}}^t - (U{b_{i,j}} + L{b_{i,j}})/2} \over {(U{b_{i,j}} + L{b_{i,j}})/2 - X_{_{i,j}}^{t{\rm{ + }}1}}} = {{{L_p}} \over {{L_{ - p}}}}\tag{13} (Ubi,j+Lbi,j)/2Xi,jt+1Xbesti,jt(Ubi,j+Lbi,j)/2=LpLp(13)式中为 X b e s t i , j t Xbest_{_{i,j}}^t Xbesti,jt当前最佳个体的位置, X i t + 1 X_i^{t + 1} Xit+1为针孔成像理论中的相反位置。Ubi,j和Lbi,j是第i条白鲸在j维上的动态边界,Lp和L-p分别是虚拟蜡烛在当前最佳位置和相反位置的长度。值得注意的是,虚拟蜡烛在海洋中的位置也是搜索代理的位置,但代表单个鲸鱼的点并没有一个有效长度。因此,两个蜡烛的比例可以设置为一个变量K。由此可知,可以得到:
X i , j t + 1 = ( K + 1 ) ( U b i , j + L b i , j ) − 2 X b e s t i , j t 2 K (13) X_{_{i,j}}^{t{\rm{ + 1}}} = {{(K + 1)(U{b_{i,j}} + L{b_{i,j}}) - 2Xbest_{_{i,j}}^t} \over {2K}}\tag{13} Xi,jt+1=2K(K+1)(Ubi,j+Lbi,j)2Xbesti,jt(13)  当两支虚拟蜡烛的长度相同时,这种策略就会演变成一种基本的反向学习策略。适当调整K的值可以改变相反点的位置,使单个白鲸有更多的搜索机会。在本文中,K被设为1.5×104。这样,每次迭代时,都会在搜索空间的中心线附近产生一个新的相反点。当对方的位置较好时,它的位置将成为一个新的边界。
在这里插入图片描述

Fig. 3 Dynamic pinhole imaging strategy

3.3 二次插值策略

  二次插值法是一种用于在确定初始区间中搜索极值点的方法,是一种曲线拟合方法。其利用目标函数在若干点的信息构成一个与目标函数值相近的低次多项式,再用此式的最优解作为函数的近似最优解,随着区间的逐步缩短,多项式的最优解与原函数的最优点之间的距离逐步减小,最后满足一定精度要求为止。其原理如图4所示。
  利用目标函数在不同3点的函数值构成一个与原函数f(x)相近似的二次多项式p(x),以函数p(x)的极值点(即p(x)=0的根)作为目标函数f(x)近似极值点。设目标函数的单峰区间为x1,x3,函数在x1,x2,x3三点处函数值分别为f1,f2,f3。
{ p ( x 1 ) = a 0 + a 1 x 1 + a 2 x 1 2 = f 1 p ( x 2 ) = a 0 + a 1 x 2 + a 2 x 2 2 = f 2 p ( x 3 ) = a 0 + a 1 x 3 + a 2 x 3 2 = f 3 (15) \left\{ \begin{aligned} p({x_1}) = {a_0} + {a_1}{x_1} + {a_2}x_1^2 = {f_1} \cr p({x_2}) = {a_0} + {a_1}{x_2} + {a_2}x_2^2 = {f_2} \cr p({x_3}) = {a_0} + {a_1}{x_3} + {a_2}x_3^2 = {f_3} \cr \end{aligned} \right.\tag{15} p(x1)=a0+a1x1+a2x12=f1p(x2)=a0+a1x2+a2x22=f2p(x3)=a0+a1x3+a2x32=f3(15)  p(x)的极值点为:
p ( x ) ′ = a 1 + 2 a 2 x = 0 (16) p{(x)'} = {a_1} + 2{a_2}x = 0\tag{16} p(x)=a1+2a2x=0(16)求得系数a1,a2,a3的值并代入(15)(16)式可得:
x p ∗ = ( x 2 2 − x 3 2 ) f 1 + ( x 3 2 − x 1 2 ) f 2 + ( x 1 2 − x 2 2 ) f 3 2 ( x 2 − x 3 ) f 1 + ( x 2 − x 1 ) f 2 + ( x 1 − x 2 ) f 3 (17) x_p^* = {{(x_2^2 - x_3^2){f_1} + (x_3^2 - x_1^2){f_2} + (x_1^2 - x_2^2){f_3}} \over {2({x_2} - {x_3}){f_1} + ({x_2} - {x_1}){f_2} + ({x_1} - {x_2}){f_3}}}\tag{17} xp=2(x2x3)f1+(x2x1)f2+(x1x2)f3(x22x32)f1+(x32x12)f2+(x12x22)f3(17)  将公式(17)求得的结果代入目标函数f(x)可得函数值为fp假若f(x)本身就为二次函数,则按照公式(17)上进行求值就能找到最优点。若f(x)为高于二次的函数或者为其他函数,则需要逐步缩小区间。如图4所示,黑实线f(x)的函数图像,蓝虚线为p(x)的函数图像。
在这里插入图片描述

(a)第一次迭代        (b)第二次迭代
Fig. 4 Principle of quadratic interpolation

  本文在每一次白鲸位置更新时,将选择最优个体 X b e s t i , j t Xbest_{_{i,j}}^t Xbesti,jt与其他两个随机个体 X r l t X_{_{rl}}^t Xrlt X r r t X_{_{rr}}^t Xrrt,构成一个与目标函数值相近的低次多项式,利用该式求出解 X i , j T + 1 X_{_{i,j}}^{T + 1} Xi,jT+1,将上述变量代入到公式(17)即可得到如下公式(18):
X i , j t + 1 = 1 2 × [ ( X r l , j t 2 − X b e s t i , j t ) f ( X r r t ) + ( X b e s t i , j t − X r r , j t 2 ) f ( X r l t ) + ( X r r , j t 2 − X r l , j t 2 ) f ( X b e s t i , j t ) ] [ ( X r l , j t − X b e s t i , j t ) f ( X r r t ) + ( X b e s t i , j t − X r r , j t ) f ( X r l t ) + ( X r r , j t − X r l , j t ) f ( X b e s t i , j t ) + e p s ] (18) X_{_{i,j}}^{t + 1} = {1 \over 2} \times {{[(X{{_{_{rl,j}}^t}^2} - Xbest_{_{i,j}}^t)f(X_{_{rr}}^t) + (Xbest_{_{i,j}}^t - X{{_{_{rr,j}}^t}^2})f(X_{_{rl}}^t) + (X{{_{_{rr,j}}^t}^2} - X{{_{_{rl,j}}^t}^2})f(Xbest_{_{i,j}}^t)]} \over {[(X_{_{rl,j}}^t - Xbest_{_{i,j}}^t)f(X_{_{rr}}^t) + (Xbest_{_{i,j}}^t - X_{_{rr,j}}^t)f(X_{_{rl}}^t) + (X_{_{rr,j}}^t - X_{_{rl,j}}^t)f(Xbest_{_{i,j}}^t) + eps]}}\tag{18} Xi,jt+1=21×[(Xrl,jtXbesti,jt)f(Xrrt)+(Xbesti,jtXrr,jt)f(Xrlt)+(Xrr,jtXrl,jt)f(Xbesti,jt)+eps][(Xrl,jt2Xbesti,jt)f(Xrrt)+(Xbesti,jtXrr,jt2)f(Xrlt)+(Xrr,jt2Xrl,jt2)f(Xbesti,jt)](18)其中 f ( X b e s t i , j t ) f(Xbest_{_{i,j}}^t) f(Xbesti,jt) f ( X b e s t i , j t ) f(Xbest_{_{i,j}}^t) f(Xbesti,jt) f ( X r r t ) f(X_{_{rr}}^t) f(Xrrt)分别表示 X b e s t i , j t Xbest_{_{i,j}}^t Xbesti,jt X r l t X_{_{rl}}^t Xrlt X r r t X_{_{rr}}^t Xrrt的适应度值。通过利用这种方法大大提升了白鲸搜索算法的局部搜索能力,进而提高了白鲸在高维空间中跳出局部最优的能力、搜索精度和收敛性能。

3.4 IBWO伪代码

对BWO的探索阶段进行了改进同时结合两种通用策略,提出了一种改进的群体教学优化算法(MGTOA)。通过上述改进策略,增强了MGTOA的探索能力与收敛速度,使计算更加全球化。

  1. Initialization parameters T, Tmax, ub, lb, N, dim, Wk.
  2. Initialize population X according to Equations (1).
  3. Calculate the fitness value of all individuals, and select the optimal solution G
  4. While T≤Tmax
  5.   Obtain balance factor Bf by Eq. (3) and probability of whale fall Wf by Eq. (10).
  6.   For i=1:N
  7.     If Bf (i) > 0.5
  8.       The beluga Exploration phase is achieved according to Formula (4).
  9.     Else If Bf (i) ≤ 0.5
  10.       The beluga Exploitation phase is achieved according to Formula (5-7).
  11.     End If
  12.     For i=1:N
  13.       If Bf (i) ≤ Wf
  14.         The beluga Whale fall is achieved according to Formula (8-10).
  15.         Determine whether the new location is within the boundary and calculate the fitness value based on its location
  16.       End If
  17.     End For
  18.     For i=1:N
  19.       Calculate with Dynamic pinhole imaging strategy Formula (13)
  20.     End For
  21.     For i=1:N
  22.       Calculate with Quadratic interpolation strategy Formula (14)
  23.     End For
  24.   End For
  25.   Find the current best solution G
  26.   T = T+1
  27. End While
  28. Output the best solution

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试必备之安卓APP测试知识大全(值得收藏)

目录 一、安卓系统知识概述 1.1 安卓系统架构 1.2 安卓权限系统 1.3 认识adb与安卓间的通信 二、安卓APP测试流程图(转) 三、安卓App测试点 3.1 UI测试 3.2 兼容性测试 3.3 安装卸载/本地升级测试OTA 3.4 版本在线升级测试FOTA 3.5 交互测试 …

记录--让整个网站界面无滚动条

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 界面无滚动条 滚动条的优化也有很多种,比如随便再网上搜索美化浏览器滚动条样式,就会出现些用css去美化滚动条的方案。 那种更好呢? 没有更好只有更合适 像默认的滚…

【网络安全入门】001、基础入门-概念名词

文章目录 基础入门-概念名词1、域名(1)什么是域名(2)域名在哪里注册(3)什么是二级域名多级域名(4)域名发现对于安全测试的意义? 2、DNS(1)什么是D…

C语言编程:坐标系的平移和旋转

本文总结博主在工作中遇到的坐标系转换相关问题,以及C语言编程实现。 文章目录 1 问题场景2 公式推导2.1 旋转坐标系推导2.2 平移坐标系推导2.3 完整公式 3 C语言编程 1 问题场景 对于ADAS算法开发,在工作中遇到过很多需要坐标系转换的场景。例如&…

进制转换(十进制与十六进制互转)

之前的一家公司基本上都是基于单片机进行开发,一般与上位机的通信都是按照自定义的协议进行操作,测试的时候会经常都对协议进行修改并且涉及到进制之间的转换,例如获取版本是十六进制的需要转换成十进制的版本信息,例如修改时间需…

013-从零搭建微服务-认证中心(五)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

LoRa模块(SX1278)详解

LoRa模块(SX1278) 0. LoRa概述概念LoRa技术的主要特点LoRa技术的工作原理 1. 常见的LoRa模块2. Semtech SX12783. STM32使用SX1278方法示例代码 0. LoRa概述 概念 LoRa(Long Range)是一种长距离、低功耗的无线通信技术&#xff…

被劫持的礼物

根据题目其实也猜得到这道题的大致考察内容 下载好后得到一个wireshark的流量文件 根据提示,flag是账号和密码组合的MD5值,想到登录,其实就想到两个登录框 也就是POST请求方法 打开文件后会也会得到一些 http的包,过滤一下 查看到…

线性DP—入门篇

线性动态规划的主要特点是状态转移的推导是按照问题规模 从小到大依次推导,较大规模的问题的解依赖较小规模的问题的解。 数字三角形: [USACO1.5][IOI1994]数字三角形 Number Triangles - 洛谷https://www.luogu.com.cn/problem/P1216我们来看一道经典…

ModaHub魔搭社区:向量数据库Milvus产品问题(三)

目录 Milvus 的数据落盘逻辑是怎样的? Mishards 推荐的配置是什么? Mishards 支持 RESTful API 吗? 什么是归一化?Milvus 中为什么有时候需要归一化? 为什么欧氏距离和内积在计算向量相似度时的结果不一致&#x…

【Git原理与使用】-- 分支管理

目录 理解分支 创建分支 查看当前分支 创建本地分支 切换分支 合并分支 删除分支 合并冲突 分支管理策略 分支策略 bug 分支 不建议的合并方式 建议的合并方式 第一步 第二步 删除临时分支 理解分支 分支就是科幻电影里面的平行宇宙,当你正在电脑前…

java 全局、局部异常处理详解及result结果封装

1、引入spring-boot-starter-web依赖和new-swagger依赖 <dependency><groupId>com.jjw</groupId><artifactId>new-swagger</artifactId><version>1.0-SNAPSHOT</version> </dependency> <dependency><groupId>or…

Linux系统编程:进程的替换

目录 一. 进程替换的原理 二. 进程替换的方法 2.1 进程替换的相关函数 2.2 进程替换为其它的C/C程序或其它语言编写的程序 三. 自主实现简单地命令行解释器 四. 总结 一. 进程替换的原理 进程替换&#xff0c;就是对进程所执行的代码进行替换&#xff0c;让正在运行的一个…

华为OD机试真题 Python 实现【简单的自动曝光】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、备注五、解题思路六、Python算法源码七、效果展示1、输入2、输出3、说明4、再输入5、输出6、说明 一、题目描述 一个图像有 n 个像素点&#xff0c;存储在一个长度为 n 的数组 img 里&#xff0c;每个像素点的取值范围[0,255]的…

HOT33-排序链表

leetcode原题链接&#xff1a;排序链表 题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出…

html内盒子长宽增加溢出但是外盒子不自动向下延

自动扩展 问题描述 外盒子设置固定px&#xff0c;导致内盒子如图片长宽增加后&#xff0c;溢出但是外盒子不自动扩展&#xff08;向下延申&#xff09; 图片高230时正常 设置250后超出 问题解决 /*height: 660px;*/ /*设死就不能自动扩展&#xff0c;内块块长宽超出&#x…

vuex-persistedstate —— 数据持久化

在之前的篇目当中对于 Vuex 中的相关内容都讲得差不多&#xff0c;但是在项目中去使用vuex&#xff0c;虽然数据状态得到管理了&#xff0c;但数据在每一次都需要去重新加载&#xff0c;那么对于数据的持久化vue是没有给解决的&#xff0c;而是通过第三方的工具去进行数据的持久…

代码随想录算法训练营第17期第4天(5休息) | 24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、​​​​​​142. 环形链表 II

目录 24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 ​​​​​​142. 环形链表 II 这题不是很难&#xff0c;目前除了从【.】变成了【->】之外&#xff0c;python和C也没啥区别 另外就是对虚拟头结点的掌握了 /*** Definition for …

爬虫小白入门在服务器上-部署爬虫或者开服务接口并供给他人访问

目录 一、准备工作-服务器1、先准备一个服务器&#xff08;以阿里云为例子&#xff09;2、开通服务端口号访问权限 二、准备工作-Xshell登录服务器1、xshell基本登录操作2、xftp基本操作 三、部署代码到服务器上1、部署一个python爬虫脚本在服务器上定时运行等2、部署一个pytho…

Java-API简析_占位符类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131504916 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…