一、理论基础
状态转移算法(State transition algorithm, STA)是基于状态和状态转移的概念及现代控制理论中状态空间表示法提出的一种智能型随机性全局优化方法,由于其优良的全局搜索能力和快速收敛性,在许多优化问题中得到了很好的应用。
1、连续状态转移算法
连续状态转移算法主要针对无约束连续优化问题,它的主体实现从以下三个方面进行阐述,其中状态变换算子、邻域与采样用于产生候选解,选择和更新用于当前最优解的替换,交替轮换策略用于不同状态变换算子的调用。
1.1 状态变换算子
(1)旋转变换(Rotation transformation, RT)
x k + 1 = x k + α 1 n ∣ ∣ x k ∣ ∣ 2 R r x k (1) \boldsymbol x_{k+1}=\boldsymbol x_{k}+\alpha\frac{1}{n||\boldsymbol x_k||_2}R_r\boldsymbol x_k\tag{1} xk+1=xk+αn∣∣xk∣∣21Rrxk(1)其中, α > 0 \alpha>0 α>0为旋转因子; R r ∈ R n × n R_r\in{\bf{R}}^{n×n} Rr∈Rn×n是一个其元素取值在 [ − 1 , 1 ] [-1,1] [−1,1]之间均匀分布的随机矩阵; ∣ ∣ ⋅ ∣ ∣ 2 ||\cdot||_2 ∣∣⋅∣∣2为向量2-范数或欧氏范数。可以证明,旋转变换具有以 α \alpha α为半径的超球内进行搜索的功能。
(2)平移变换(Translation transformation, TT)
x k + 1 = x k + β R t x k − x k − 1 ∣ ∣ x k − x k − 1 ∣ ∣ 2 (2) \boldsymbol x_{k+1}=\boldsymbol x_{k}+\beta R_t\frac{\boldsymbol x_k-\boldsymbol x_{k-1}}{||\boldsymbol x_k-\boldsymbol x_{k-1}||_2}\tag{2} xk+1=xk+βRt∣∣xk−xk−1∣∣2xk−xk−1(2)其中, β > 0 \beta>0 β>0为平移因子; R t ∈ R R_t\in\bf R Rt∈R是一个其元素取值在 [ − 1 , 1 ] [-1,1] [−1,1]之间均匀分布的随机数。平移变换具有在沿着从点 x k − 1 \boldsymbol x_{k-1} xk−1到点 x k \boldsymbol x_k xk的直线上并以 x k \boldsymbol x_k xk为起点、 β \beta β为最大长度进行搜索的功能。
(3)伸缩变换(Expansion transformation, ET)
x k + 1 = x k + γ R e x k (3) \boldsymbol x_{k+1}=\boldsymbol x_{k}+\gamma R_e\boldsymbol x_k\tag{3} xk+1=xk+γRexk(3)其中, γ > 0 \gamma>0 γ>0为伸缩因子; R e ∈ R n × n R_e\in{\bf R}^{n×n} Re∈Rn×n是一个其非零元素取值服从高斯分布的随机对角矩阵。从理论上看,伸缩变换能够把 x k \boldsymbol x_k xk中的每个元素伸缩到 ( − ∞ , + ∞ ) (-\infty,+\infty) (−∞,+∞)的范围内。
(4)轴向变换(Axesion transformation, AT)
x k + 1 = x k + δ R a x k (4) \boldsymbol x_{k+1}=\boldsymbol x_{k}+\delta R_a\boldsymbol x_k\tag{4} xk+1=xk+δRaxk(4)其中, δ > 0 \delta>0 δ>0为轴向因子; R a ∈ R n × n R_a\in{\bf R}^{n×n} Ra∈Rn×n是一个其非零元素取值服从高斯分布的稀疏随机对角矩阵(基本连续状态转移算法中,只有一个随机位置为非零元素)。轴向变换的功能是增强单一维度的搜索。
1.2 邻域与采样
从某个当前状态
x
k
\boldsymbol x_k
xk出发,通过状态变换算子的作用,由于随机性, 产生的候选状态
x
k
+
1
\boldsymbol x_{k+1}
xk+1不是唯一的。不难想象,对一个固定的当前
x
k
\boldsymbol x_k
xk,在某种特定的状态变换算子作用下,所有产生的候选解将构成一个集合,形成一个邻域,记作
N
x
k
o
p
e
r
a
t
o
r
N_{\boldsymbol x_k}^{operator}
Nxkoperator,其中
o
p
e
r
a
t
o
r
operator
operator代表某种特定算子。容易理解,邻域
N
x
k
o
p
e
r
a
t
o
r
N_{\boldsymbol x_k}^{operator}
Nxkoperator中的元素具有同质性,它们是由固定的当前
x
k
\boldsymbol x_k
xk和特定的状态变换算子
o
p
e
r
a
t
o
r
operator
operator共同作用产生的。
考虑到邻域
N
x
k
o
p
e
r
a
t
o
r
N_{\boldsymbol x_k}^{operator}
Nxkoperator中候选解的同质性,利用采样策略从该邻域中以一定的机制随机采集有限个候选解,可以节省搜索时间、避免穷举带来的时间复杂度过高的问题。以旋转变换为例,基本连续状态转移算法中随机均匀采样策略的伪代码如下所示:
其中,
B
e
s
t
k
\boldsymbol {Best}_k
Bestk表示当前最优解;
S
E
SE
SE可以理解为搜索强度、采样力度或样本大小(种群规模);
S
t
a
t
e
State
State表示在给定的
B
e
s
t
k
\boldsymbol{Best}_k
Bestk和旋转变换作用下产生的样本大小为
S
E
SE
SE的状态集。
1.3 选择与更新
在基本连续状态转移算法中,均采用“贪婪准则”来选择和更新最优解,如下所示: B e s t = { n e w B e s t , f ( n e w B e s t ) < f ( B e s t ) B e s t , o t h e r w i s e (5) \boldsymbol{Best}=\begin{dcases}\boldsymbol{newBest},\quad f(\boldsymbol{newBest})<f(\boldsymbol{Best})\\\boldsymbol{Best},\quad\quad\quad\, otherwise\end{dcases}\tag{5} Best={newBest,f(newBest)<f(Best)Best,otherwise(5)其中, n e w B e s t \boldsymbol{newBest} newBest是从状态集 S t a t e State State中选择的“最优解”。
1.4 交替轮换
为达到全局优化的本质要求,即在最短的时间内找到全局最优解,状态转移算法中专门设计了全局搜索算子和局部搜索算子,并采用了交替轮换的机制使用各种算子。基本连续状态转移算法的伪代码如下:
其中,
B
e
s
t
0
\boldsymbol{Best}_0
Best0为随机产生的初始解,
e
x
p
a
n
s
i
o
n
,
r
o
t
a
t
i
o
n
expansion, rotation
expansion,rotation以及
a
x
e
s
i
o
n
axesion
axesion函数分别实现了伸缩变换、旋转变换和轴向变换并包括选择和更新功能。值得注意的是,状态转移算法中采用了交替轮换的机制使用各种搜索算子,即旋转、伸缩变换和轴向搜索轮换进行,并且在分别使用旋转、伸缩变换和轴向变换后调用了平移变换。采用的交替轮换机制是为了适应不同结构类型优化问题的需要,它的一大好处是在未达到全局最优解邻域时,避免浪费过多的时间进行局部搜索,增强搜索过程的活跃性。
此外,基本状态转移算法的参数设置如下:
α
max
=
1
,
α
min
=
1
×
1
0
−
4
,
β
=
1
,
γ
=
1
,
δ
=
1
,
S
E
=
30
,
f
c
=
2
\alpha_{\max}=1,\alpha_{\min}=1×10^{-4},\beta=1,\gamma=1,\delta=1,SE=30,fc=2
αmax=1,αmin=1×10−4,β=1,γ=1,δ=1,SE=30,fc=2。其中平移、伸缩和轴向因子都保持恒定,旋转因子
α
\alpha
α以指数的方式进行衰减,底数为
1
f
c
\frac1{f_c}
fc1,并且以周期性的方式在最大值
α
max
\alpha_{\max}
αmax和最小值
α
min
\alpha_{\min}
αmin之间进行变化。
2、离散状态转移算法
离散状态转移算法用于求解决策变量为离散变量的优化问题,比如旅行商问题(Travelling salesman problem, TSP)。其与连续状态转移算法的主要差别是候选解的产生和编码方式有所不同。离散状态转移算法中设计了交换、平移、对称和替换算子四种具有特定几何功能的算子,对候选解采用独特的下标表示法作为候选解的编码方式,使利用搜索算子得到的候选解均为可行解,避免了算法在迭代求解过程中对不可行解的修正,缩短了离散优化问题的求解时间。
为了介绍基本离散状态转移算法的主要思想,考虑如下的离散优化问题:
min
x
i
∈
K
f
(
x
)
(6)
\underset{x_i\in K}{\min}\,\,f(\boldsymbol x)\tag{6}
xi∈Kminf(x)(6)其中,
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
\boldsymbol x=[x_1,x_2,\cdots,x_n]^T
x=[x1,x2,⋯,xn]T,
K
=
{
κ
1
,
κ
2
,
⋯
,
κ
n
}
K=\{\kappa_1,\kappa_2,\cdots,\kappa_n\}
K={κ1,κ2,⋯,κn}是每个元素
x
i
x_i
xi取值的集合。
2.1 下标表示法
为了方便求解离散优化问题,加快搜索速率,离散状态转移算法采用下标表示法对候选解进行编码。对于如式(6)所示的离散最优选择问题,下标表示法将 n n n维决策变量的取值 { κ 1 , κ 2 , ⋯ , κ m } \{\kappa_1,\kappa_2,\cdots,\kappa_m\} {κ1,κ2,⋯,κm}与 { 1 , 2 , ⋯ , m } \{1,2,\cdots,m\} {1,2,⋯,m}中的数字一一对应,将决策变量 x \boldsymbol x x编码成一种包含 1 , 2 , ⋯ , m 1,2,\cdots,m 1,2,⋯,m这些数字的序列。下标表示法具有可拓展性,可以根据离散优化问题的具体形式,做出相应的变化。此外,采用下标表示法也可以降低部分离散优化问题的求解难度。
2.2 离散状态变换算子
离散状态转移算法设计了四种典型离散状态变换算子,同样具有一定的几何搜索功能、全局搜索和局部搜索能力。各种算子的示意图如图1所示。
(1)交换变换算子
x k + 1 = A k s w a p ( m a ) x k (7) \boldsymbol x_{k+1}=A_k^{swap}(m_a)\boldsymbol x_k\tag{7} xk+1=Akswap(ma)xk(7)其中, A k s w a p ∈ Z n × n A_k^{swap}\in{\bf Z}^{n×n} Akswap∈Zn×n称为交换变换矩阵,是一个带有交换变换功能的随机布尔矩阵。该算子具有交换 x k \boldsymbol x_k xk中 m a m_a ma个元素的能力。 m a m_a ma称为交换因子,具有控制交换变换元素的个数的作用。
(2)移动变换算子
x k + 1 = A k s h i f t ( m b ) x k (8) \boldsymbol x_{k+1}=A_k^{shift}(m_b)\boldsymbol x_k\tag{8} xk+1=Akshift(mb)xk(8)其中, A k s h i f t ∈ Z n × n A_k^{shift}\in{\bf Z}^{n×n} Akshift∈Zn×n称为移动变换矩阵,是一个带有移动变换功能的随机布尔矩阵。该算子具有将 x k \boldsymbol x_k xk中连续 m b m_b mb个元素移动到另一个随机位置后面的能力。 m b m_b mb称为移动因子,具有控制候选解中最多连续移动元素的作用。
(3)对称变换算子
x k + 1 = A k s y m ( m c ) x k (9) \boldsymbol x_{k+1}=A_k^{sym}(m_c)\boldsymbol x_k\tag{9} xk+1=Aksym(mc)xk(9)其中, A k s y m ∈ Z n × n A_k^{sym}\in{\bf Z}^{n×n} Aksym∈Zn×n称为对称变换矩阵,是一个带有对称变换功能的随机布尔矩阵。该算子具有将 x k \boldsymbol x_k xk中连续 m c m_c mc个元素翻转到另一个随机位置对面的能力。 m c m_c mc称为对称因子,具有控制候选解对称变换元素个数的作用。
(4)替代变换算子
x
k
+
1
=
A
k
s
u
b
(
m
d
)
x
k
(10)
\boldsymbol x_{k+1}=A_k^{sub}(m_d)\boldsymbol x_k\tag{10}
xk+1=Aksub(md)xk(10)其中,
A
k
s
u
b
∈
Z
n
×
n
A_k^{sub}\in{\bf Z}^{n×n}
Aksub∈Zn×n称为替代变换矩阵,是一个带有替代变换功能的随机布尔矩阵。该算子具有将
x
k
\boldsymbol x_k
xk中连续
m
d
m_d
md个元素进行替换的能力。
m
d
m_d
md称为替代因子,具有控制候选解中被替代元素个数的作用。
二、实验与分析
1、函数测试
将连续STA分别与樽海鞘群算法(SSA)、鲸鱼优化算法(WOA)、飞蛾火焰优化算法(MFO)、教与学优化算法(TLBO)、灰狼优化算法(GWO)进行对比,以文献[2]中表1列出的10个测试函数为例。设置种群规模为30,最大迭代次数为1000,每个算法独立运算30次。结果显示如下:
函数:F1
SSA:最差值: 1.8475e-08,最优值:7.4852e-09,平均值:1.213e-08,标准差:2.742e-09,秩和检验:1.2118e-12
WOA:最差值: 3.3438e-149,最优值:9.0182e-172,平均值:1.1384e-150,标准差:6.1008e-150,秩和检验:1.2118e-12
MFO:最差值: 10000,最优值:1.0535e-05,平均值:2666.6669,标准差:4497.7643,秩和检验:1.2118e-12
TLBO:最差值: 1.7753e-183,最优值:2.0294e-188,平均值:1.2684e-184,标准差:0,秩和检验:1.2118e-12
GWO:最差值: 9.9344e-58,最优值:8.0907e-62,平均值:6.1757e-59,标准差:1.7872e-58,秩和检验:1.2118e-12
STA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F2
SSA:最差值: 106.4603,最优值:34.8235,平均值:64.0752,标准差:18.6718,秩和检验:1.2118e-12
WOA:最差值: 5.6843e-14,最优值:0,平均值:1.8948e-15,标准差:1.0378e-14,秩和检验:0.33371
MFO:最差值: 240.9918,最优值:76.6117,平均值:164.2882,标准差:40.6265,秩和检验:1.2118e-12
TLBO:最差值: 25.9813,最优值:6.9648,平均值:14.8451,标准差:4.9511,秩和检验:1.2118e-12
GWO:最差值: 14.1079,最优值:0,平均值:0.66876,标准差:2.761,秩和检验:0.021546
STA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F3
SSA:最差值: 0.039353,最优值:4.5559e-08,平均值:0.010172,标准差:0.010384,秩和检验:4.5618e-11
WOA:最差值: 0.11272,最优值:0,平均值:0.0037574,标准差:0.02058,秩和检验:1
MFO:最差值: 180.989,最优值:8.7983e-05,平均值:18.1269,标准差:43.8093,秩和检验:2.4098e-11
TLBO:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:0.33371
GWO:最差值: 0.019066,最优值:0,平均值:0.0020703,标准差:0.0054346,秩和检验:0.18993
STA:最差值: 0.10265,最优值:0,平均值:0.0034216,标准差:0.018741,秩和检验:1
函数:F4
SSA:最差值: 1394.3768,最优值:22.4618,平均值:182.5539,标准差:376.4949,秩和检验:2.6015e-08
WOA:最差值: 28.7226,最优值:26.474,平均值:27.1524,标准差:0.45649,秩和检验:5.5727e-10
MFO:最差值: 90135.2834,最优值:14.8313,平均值:27281.4561,标准差:41801.2529,秩和检验:1.7294e-07
TLBO:最差值: 25.645,最优值:21.2689,平均值:23.4194,标准差:0.73342,秩和检验:9.0632e-08
GWO:最差值: 27.9401,最优值:25.1974,平均值:26.7971,标准差:0.63968,秩和检验:9.7555e-10
STA:最差值: 83.8687,最优值:14.3985,平均值:26.4819,标准差:11.0199,秩和检验:1
函数:F5
SSA:最差值: -6315.5349,最优值:-11372.6096,平均值:-9171.8564,标准差:1163.5408,秩和检验:3.0199e-11
WOA:最差值: -12089.4945,最优值:-14843.1434,平均值:-14065.507,标准差:852.7645,秩和检验:0.0072884
MFO:最差值: -6935.3981,最优值:-9886.8042,平均值:-8399.0168,标准差:612.7715,秩和检验:3.0199e-11
TLBO:最差值: -4252.9337,最优值:-8351.3628,平均值:-6163.1463,标准差:1016.281,秩和检验:3.0199e-11
GWO:最差值: -3077.9476,最优值:-5094.1962,平均值:-4192.1134,标准差:468.5024,秩和检验:3.0199e-11
STA:最差值: -14548.7465,最优值:-14784.3606,平均值:-14673.3631,标准差:51.3879,秩和检验:1
函数:F6
SSA:最差值: 4.7003,最优值:2.6812e-05,平均值:2.087,标准差:0.97925,秩和检验:1.2118e-12
WOA:最差值: 7.9936e-15,最优值:8.8818e-16,平均值:3.2567e-15,标准差:2.1546e-15,秩和检验:0.0026674
MFO:最差值: 19.9612,最优值:0.0035627,平均值:14.7331,标准差:7.4061,秩和检验:1.2118e-12
TLBO:最差值: 4.4409e-15,最优值:4.4409e-15,平均值:4.4409e-15,标准差:0,秩和检验:NaN
GWO:最差值: 2.2204e-14,最优值:1.1546e-14,平均值:1.6046e-14,标准差:2.7886e-15,秩和检验:2.5917e-13
STA:最差值: 4.4409e-15,最优值:4.4409e-15,平均值:4.4409e-15,标准差:0,秩和检验:NaN
函数:F7
SSA:最差值: -13.3718,最优值:-21.9633,平均值:-17.2707,标准差:1.9669,秩和检验:3.0199e-11
WOA:最差值: -7.81,最优值:-14.3439,平均值:-11.5587,标准差:1.4931,秩和检验:3.0199e-11
MFO:最差值: -16.8592,最优值:-24.9971,平均值:-20.6822,标准差:2.0164,秩和检验:3.0199e-11
TLBO:最差值: -22.7147,最优值:-28.5104,平均值:-26.1158,标准差:1.4973,秩和检验:6.0658e-11
GWO:最差值: -9.3663,最优值:-18.5087,平均值:-14.0349,标准差:3.2899,秩和检验:3.0199e-11
STA:最差值: -27.6021,最优值:-29.617,平均值:-29.0231,标准差:0.64895,秩和检验:1
函数:F8
SSA:最差值: 0.0097159,最优值:9.4369e-15,平均值:0.0025909,标准差:0.00437,秩和检验:1.2078e-12
WOA:最差值: 0.0097159,最优值:0,平均值:0.0038864,标准差:0.0048412,秩和检验:0.000144
MFO:最差值: 0.037224,最优值:0,平均值:0.010309,标准差:0.0053837,秩和检验:1.7653e-13
TLBO:最差值: 3.8858e-16,最优值:0,平均值:1.2953e-17,标准差:7.0944e-17,秩和检验:0.33371
GWO:最差值: 0.0097159,最优值:0,平均值:0.004858,标准差:0.004941,秩和检验:1.2717e-05
STA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F9
SSA:最差值: -1,最优值:-1,平均值:-1,标准差:6.9102e-13,秩和检验:0.0046371
WOA:最差值: 0,最优值:-1,平均值:-0.96667,标准差:0.18257,秩和检验:3.0199e-11
MFO:最差值: -1,最优值:-1,平均值:-1,标准差:0,秩和检验:1.2118e-12
TLBO:最差值: -1,最优值:-1,平均值:-1,标准差:0,秩和检验:1.2118e-12
GWO:最差值: -1,最优值:-1,平均值:-1,标准差:2.7354e-07,秩和检验:3.0199e-11
STA:最差值: -1,最优值:-1,平均值:-1,标准差:1.2468e-12,秩和检验:1
函数:F10
SSA:最差值: 3,最优值:3,平均值:3,标准差:7.4053e-14,秩和检验:3.3505e-08
WOA:最差值: 3.0004,最优值:3,平均值:3,标准差:6.7512e-05,秩和检验:3.3384e-11
MFO:最差值: 3,最优值:3,平均值:3,标准差:2.2281e-15,秩和检验:2.1033e-11
TLBO:最差值: 3,最优值:3,平均值:3,标准差:2.163e-15,秩和检验:3.1602e-12
GWO:最差值: 3.0001,最优值:3,平均值:3,标准差:1.3857e-05,秩和检验:3.0199e-11
STA:最差值: 3,最优值:3,平均值:3,标准差:3.1386e-10,秩和检验:1
结果表明,状态转移算法具有良好的全局搜索能力和收敛性,是一种很有前途的优化算法。
2、求解TSP
由于替代变换算子可能会导致重复序列,因此本文使用的求解TSP的离散STA不包括替代变换算子。设置离散STA种群规模为30,最大迭代次数为500。以bayg29、att48和gr96数据集为例。
(1)bayg29
图2为计算bayg29问题的收敛曲线图。
图3为离散STA计算bayg29得到的最优路径。
(2)att48
图4为计算att48问题的收敛曲线图。
图5为离散STA计算att48得到的最优路径。
(3)gr96
图6为计算gr96问题的收敛曲线图。
图7为离散STA计算gr96得到的最优路径。
实验结果表明了离散STA具有很强的搜索能力,能够有效优化TSP的距离。
三、参考文献
[1] 周晓君, 阳春华, 桂卫华. 状态转移算法原理与应用[J]. 自动化学报, 2020, 46(11): 2260-2274.
[2] Xiaojun Zhou, Chunhua Yang, Weihua Gui. State transition algorithm[J]. Journal of Industrial & Management Optimization, 2012, 8(4): 1039-1056.
[3] Tang X, Yang C, Zhou X, et al. A discrete state transition algorithm for generalized traveling salesman problem[M]. Advances in Global Optimization. Springer, Cham, 2015: 137-145.