zl程序教程

您现在的位置是:首页 >  其他

当前栏目

基于精英反向策略的麻雀搜索算法1-附代码

代码 基于 策略 反向 搜索算法 精英 麻雀
2023-09-14 09:06:13 时间

基于精英反向学习策略的麻雀搜索算法

1.反向学习策略

反向学习策略是由 Tizhoosh 于 2005 年提出的,目前已在 GA、DE、ACO 和 BBO 等群体智能优化算法中得到了成功的应用。

定义1. 反向点。假设在 [ l , u ] [l,u] [lu]上存在数 x x x,则 x x x 的反向点定义为 x ′ = l + u - x x' = l + u - x x=l+ux。将反向点的定义扩展到 D D D 维空间,设 p = ( x 1 , x 2 , … , x D ) p = (x_1 ,x_2 ,…,x_D ) p=(x1x2xD) D D D 维空间中的一个点,其中 x i ∈ [ l i , u i ] x_i ∈[l_i ,u_i ] xiliui i = 1 , 2 , … , D i =1,2,…,D i=12D,则其反向点 p ′ = ( x 1 ′ , x 2 ′ , … , x D ′ ) p' = (x'_1 ,x'_2 ,…,x'_D ) p=(x1x2xD),其中 x i ′ = l i + u i − x i x'_i = l_i +u_i-x_i xi=li+uixi

2.精英反向学习

反向解的引入,可以扩大算法的搜索区域,但对那些原解适应度值大于反向解适应度值的个体,对其进行反向区域的搜索,浪费时间,则应加强其领域搜索。而对原解适应度值小于反向解适应度值的个体,对其进行反向区域的搜素价值要高于其领域的开发价值。

定义: 精英(elite)。设 x i ( t ) = ( x i 1 , x i 2 , … , x i D ) x_i (t) = (x_{i1} ,x_{i2} ,…,x_{iD} ) xi(t)=(xi1xi2xiD) 是第 t t t 次迭代的一个解,其反向解为 x i ( t ) ∗ x_i(t)^* xi(t) f ( x ) f(x) f(x) 为目标函数。当 f ( x i ( t ) ) ≥ f ( x i ( t ) ∗ ) f(x _i(t)) ≥f(x_i(t)^*) f(xi(t))f(xi(t))时,称 x i ( t ) x_i(t) xi(t) 为第 t t t 次迭代的精英个体,记为 N i ( t ) N_i(t) Ni(t) ;当 f ( x i ( t ) ) < f ( x i ( t ) ∗ ) f(x_i(t)) < f(x_i(t)^*) f(xi(t))f(xi(t)) 时,称 x t ( t ) x_t(t) xt(t) 为第 t t t 次迭代的普通个体,记为 Q i ( t ) Q_i (t) Qi(t)。若精英群体的规模为 p ( 1 < p ≤ n , n 为解的总个数 ) p(1 <p ≤n,n 为解的总个数) p(1pnn为解的总个数) 时,则 p p p 个精英个体可表示为 { N 1 ( t ) , N 2 ( t ) , … , N p ( t ) } ∈ { x 1 ( t ) , x 2 ( t ) , … , x n ( t ) } \{N _1 (t),N_2 (t),…,N_p (t)\}\in \{x 1 (t),x2 (t),…,x n (t)\} {N1(t)N2(t)Np(t)}{x1(t)x2(t)xn(t)}

定义: 精英反向解(elite opposite solution) 设 x i j x_{ij} xij 为普通个体 x i x_i xi j j j 维上的值,则其反向解可定义为:
x i j ∗ ( t ) = k ( a j ( t ) + b j ( t ) ) − x i j ( t ) x_{ij}^*(t) = k(a_j(t) + b_j(t)) - x_{ij}(t) xij(t)=k(aj(t)+bj(t))xij(t)
式中:k 是介于 0~1 的随机数; a j ( t ) = m i n ( N 1 j ( t ) , . . . , N p j ( t ) ) ; b j ( t ) = m a x ( N 1 j ( t ) , . . . , N p j ( t ) ) a_j(t) = min(N_{1j}(t),...,N_{pj}(t));b_j(t) = max(N_{1j}(t),...,N_{pj}(t)) aj(t)=min(N1j(t),...,Npj(t));bj(t)=max(N1j(t),...,Npj(t)) [ a j ( t ) , b j ( t ) ] [a_j(t),b_j(t)] [aj(t),bj(t)]为精英群体所构造的区间。

2.基于精英反向学习策略的麻雀搜索算法

基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958

该改进主要是在初始化种群时,利用反向学习策略初始化种群

算法流程

Step1: 利用精英反向学习策略初始化种群,迭代次数,初始化捕食者和加入者比列。

Step2:计算适应度值,并排序。

Step3:麻雀更新捕食者位置。

Step4:麻雀更新加入者位置。

Step5:麻雀更新警戒者位置。

Step6:计算适应度值并更新麻雀位置。

Step7:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-6;

3.算法结果:

请添加图片描述

4.Matlab

5.Python