SHADE应用于耦合矩阵优化

基于成功历史的自适应差分进化算法(SHADE)

  SHADE是基于JADE的有效优化,相比于JADE更稳定。

current-to-pbest

  SHADE使用了JADE的优化策略DE/current-to-pbest。
v i , G = x i , G + F i ⋅ ( x p b e s t , G − x i , G ) + F i ⋅ ( x r 1 , G − x r 2 , G ) \begin{equation} v_{i,G}=x_{i,G}+F_i \centerdot(x_{pbest,G}-x_{i,G})+F_i\centerdot(x_{r1,G}-x_{r2,G}) \end{equation} vi,G=xi,G+Fi(xpbest,Gxi,G)+Fi(xr1,Gxr2,G)
  相比于JADE中p是固定值,SHADE中p取值 [ 2 / p o p _ s i z e , 0.2 ] [2/pop\_size,0.2] [2/pop_size,0.2],其中0.2是JADE作者在其论文中建议的最大值。

外部存储器

SHADE有一个外部存储器用于保存上一代被淘汰的亲本向量 x i , G x_{i,G} xi,G,该存储其中的样本集合被记为A,规定 ∣ A ∣ = ∣ P ∣ |A|=|P| A=P,当档案大小超过 ∣ P ∣ |P| P时,随机替换其中的样本,(1)式中 x r 2 , G x_{r2,G} xr2,G就取自 P ∪ A P\cup A PA

参数自适应

C R i = r a n d n i ( μ C R , 0.1 ) F i = r a n d c i ( μ F , 0.1 ) \begin{equation} CR_i=randn_i(\mu_{CR},0.1) \end{equation}\\[2mm] \begin{equation} F_i=randc_i(\mu_F,0.1) \end{equation} CRi=randni(μCR,0.1)Fi=randci(μF,0.1)
   r a n d n randn randn表示正态分布,形状相对集中,而 r a n d c randc randc表示柯西分布,其形状则可以取更广的范围。

柯西分布的长尾特性可以更高的捕捉极端事件的发生概率。

  生成的 C R CR CR如果超出范围[0,1]则取边界值,而 F F F如果大于1取1,小于等于0则重新生成。

  在每一代中,在 C R i CR_i CRi F i F_i Fi值成功生成优于亲本个体 x i , G x_{i,G} xi,G的试验向量 u i , G u_{i,G} ui,G,记录为 S C R S_{CR} SCR S F S_F SF,并且在生成结束时,JADE中 μ C R μ_{CR} μCR μ F μ_F μF更新为:
μ C R = ( 1 − c ) ⋅ μ C R + c ⋅ m e a n W A ( S C R ) μ F = ( 1 − c ) ⋅ μ F + c ⋅ m e a n L ( S F ) \begin{equation} μ_{CR}=(1-c)\centerdot μ_{CR}+c\centerdot mean_{WA}(S_{CR}) \end{equation}\\[2mm] \begin{equation} μ_F=(1-c)\centerdot \mu_F+c\centerdot mean_L(S_F) \end{equation} μCR=(1c)μCR+cmeanWA(SCR)μF=(1c)μF+cmeanL(SF)
  其中, m e a n A mean_A meanA是算术均值, m e a n L mean_L meanL是莱默均值。

x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn是n个正实数, t t t为任意实数。
则莱默均值定义为:
L t ( x 1 , . . . , x n ) = x 1 t + 1 + x 2 t + 1 + . . . + x n t + 1 x 1 t + x 2 t + . . . + x n t = ∑ i = 1 n x i ( t + 1 ) ∑ i = 1 n x i t \begin{equation} L_t(x_1,...,x_n)=\frac{x_1^{t+1}+x_2^{t+1}+...+x_n^{t+1}}{x_1^{t}+x_2^{t}+...+x_n^{t}}=\frac{\sum_{i=1}^nx_i^{(t+1)}}{\sum_{i=1}^nx_i^{t}} \end{equation} Lt(x1,...,xn)=x1t+x2t+...+xntx1t+1+x2t+1+...+xnt+1=i=1nxiti=1nxi(t+1)
  之所以用莱默均值是因为 F F F是由柯西分布随机生成,可能存在部分极端值,而莱默均值对于极端值计算时还会考虑权重,对整个数据分布的形状更加稳健。

  上式中 μ C R \mu_{CR} μCR是使用算术均值更新的,这会偏置 μ C R \mu_{CR} μCR,使其收敛到一个较小的值。因此SHADE采用了权重均值(6)。
m e a n W A ( S C R ) = ∑ k = 1 ∣ S C R ∣ w k ⋅ S C R , k \begin{equation} mean_{WA}(S_{CR})=\sum_{k=1}^{|S_{CR}|}w_k\centerdot S_{CR,k} \end{equation} meanWA(SCR)=k=1SCRwkSCR,k
权重计算如下,其中 ∇ f k = ∣ f ( u k , G ) − f ( x x , G ) ∣ \nabla f_k=|f(u_{k,G})-f(x_{x,G})| fk=f(uk,G)f(xx,G)
w k = ∇ f k ∑ k = 1 ∣ S C R ∣ ∇ f k \begin{equation} w_k=\frac{\nabla f_k}{\sum_{k=1}^{|S_{CR}|}\nabla f_k} \end{equation} wk=k=1SCRfkfk
而由于权重的计算方式,在算法中,当 f ( u i , G ) ⩽ f ( x i , G ) f(u_{i,G})\leqslant f(x_{i,G}) f(ui,G)f(xi,G)时更新个体,而只在 f ( u i , G ) < f ( x i , G ) f(u_{i,G})<f(x_{i,G}) f(ui,G)<f(xi,G)时记录 S C R S_{CR} SCR S F S_F SF。如流程图16-24行。
同样的, μ F \mu_F μF也使用了权重·莱默均值进行更新,如下:
m e a n W L = ∑ i = 1 n w i ⋅ x i ( t + 1 ) ∑ i = 1 n w i ⋅ x i t \begin{equation} mean_{WL}=\frac{\sum_{i=1}^nw_i\centerdot x_i^{(t+1)}}{\sum_{i=1}^nw_i\centerdot x_i^{t}} \end{equation} meanWL=i=1nwixiti=1nwixi(t+1)
在这里插入图片描述
M C R M_{CR} MCR M F M_F MF用于保存 S C R S_{CR} SCR S F S_F SF,全初始化为0.5。经试验,H取值为 p o p _ s i z e pop\_size pop_size时收敛效果最好。
  与JADE一样,成功个体使用的 C R i CR_i CRi F i F_i Fi值记录在 S C R S_{CR} SCR S F S_F SF中,在生成结束时,存储器的内容更新如下:
M C R , k , G + 1 = { m e a n W A ( S C R ) if  S C R ≠ ∅ M C R , k , G otherwise M F , k , G + 1 = { m e a n W L ( S F ) if  S F ≠ ∅ M F , k , G otherwise \begin{equation} M_{CR,k,G+1}= \begin{dcases} mean_{WA}(S_{CR}) &\text{if } S_{CR}\not=\empty \\ M_{CR,k,G} &\text{otherwise} \end{dcases} \end{equation}\\[2mm] \begin{equation} M_{F,k,G+1}= \begin{dcases} mean_{WL}(S_{F}) &\text{if } S_{F}\not=\empty \\ M_{F,k,G} &\text{otherwise} \end{dcases} \end{equation} MCR,k,G+1={meanWA(SCR)MCR,k,Gif SCR=otherwiseMF,k,G+1={meanWL(SF)MF,k,Gif SF=otherwise
显然当 G G G代中的所有个体未能生成比父代更好的试验向量时, S C R = S F = ∅ S_{CR}=S_F=\empty SCR=SF=,此时存储器不更新。 k ∈ [ 1 , H ] k\in[1,H] k[1,H],决定存储器更新的位置,初始化为1,每次更新加1,当 k ⩾ H k\geqslant H kH时重新赋值1。

算法流程图

在这里插入图片描述
  为了避免陷入局部最优,我采用了排队搜索算法(Queuing search algorithm, QSA)来生成初始值。简单来说就是使用QSA优化一定轮次的随机矩阵,优化的结果作为SHADE的初始值。

  通过对QSA与一些最先进或知名的元启发式算法的比较,证明了QSA是一种极具竞争力的元启发式算法,在跳出局部最优解搜索全局最优解方面具有很大的优势和竞争力。

以下是近期实验结果整理:

N阶SHADEQSA-SHADE
成功率 (es<5e-6)运行时间成功率 (es<5e-6)运行时间
6阶77.5%27.9s (epoch=2000)67.5%21.4s (epoch=2000)
8阶100%114.19s (epoch=6000)100%105.88s (epoch=6000)
10阶65%667.03s (epoch=10000)72.5%537.72s (epoch=10000)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Shade Matlab是一种在Matlab软件中使用的灰度变换方法,它可以将一幅灰度图像的像素值映射到另一幅灰度图像上,从而实现调整图像的对比度和亮度。在实际用中,Shade Matlab主要用于图像增强、图像处理、目标检测等领域。具体来说,通过设置Shade Matlab中的参数,可以实现对图像亮度和对比度的不同调整,达到不同的目的。其中,亮度的增加会使得图像变得更明亮,而亮度的减少则会使图像变得更暗。而对比度的增加则会增强图像的细节和纹理,使得图像更加清晰。需要注意的是,在使用Shade Matlab进行图像处理时,需要根据实际情况合理设置参数以达到最佳效果,同时还需要对处理结果进行评估和验证。总之,Shade Matlab是Matlab软件中非常有用的一个图像处理工具,可以帮助用户在图像处理中取得更好的效果。 ### 回答2: Shade Matlab是一个Matlab函数库,它可以生成高质量的渐变/阴影图形。该库包括多种渐变/阴影形状,例如矩形、椭圆、多边形等,并且支持自定义形状。使用Shade Matlab还可以定义渐变/阴影的颜色、方向、透明度等属性,以满足不同的绘图需求。 除此之外,Shade Matlab还提供了多种绘图方法,例如绘制等高线图、绘制地形图、绘制3D渐变图等。这些图形可以用于各种用领域,例如地理信息系统、气象学、生态学等。 总之,Shade Matlab是一个功能强大的Matlab函数库,它可以帮助用户轻松地生成多种高质量的渐变/阴影图形。无论是初学者还是专业人士,都可以受益于这个库的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值