1 相关资源:
2020年发表在自动化学报的论文《状态转移算法原理及应用》,对状态转移算法作了广泛而深入的介绍:
http://www.aas.net.cn/cn/article/doi/10.16383/j.aas.c190624
各种状态转移算法的源代码可以在中南大学周晓君教授的个人主页免费下载:
https://faculty.csu.edu.cn/michael_x_zhou/zh_CN/article/198862/content/2802.htm#article
2 基本状态转移算法
状态转移算法(state transition algorithm)是一种基于结构主义学习的智能优化算法,它抓住最优化算法的本质、目的和要求,以全局性、最优性、快速性、收敛性、可控性为核心结构要素,需要什么才学习什么。2012年,周晓君教授正式提出这种新颖的智能型随机性全局优化方法,它的基本思想是:将最优化问题的一个解看成是一个状态, 解的迭代更新过程看成是状态转移过程, 利用现代控制理论的状态空间表达式来作为产生候选解的统一框架, 基于此框架来设计状态变换算子。与大多数基于种群的进化算法不同, 基本的状态转移算法是一种基于个体的进化算法, 它基于给定当前解, 通过采样方式, 多次独立运行某种状态变换算子产生候选解集, 并与当前解进行比较, 迭代更新当前解,直到满足某种终止条件。 值得一提的是, 基本状态转移算法中的每种状态变换算子都能够产生具有规则形状、可控大小的几何邻域, 它设计了包括旋转变换、平移变换、伸缩变换、坐标轴搜索等不同的状态变换算子以满足全局搜索、局部搜索以及启发式搜索等功能需要, 并且以交替轮换的方式适时地使用各种不同算子, 使得状态转移算法能够以一定概率很快找到全局最优解。
2.1 状态转移算法的统一框架
借鉴于现代控制理论中的状态空间模型表示法,状态转移算法的基本框架可表述如下:
{ s k + 1 = A k s k + B k u k y k + 1 = f ( s k + 1 ) \left\{\begin{array}{l} s_{k+1}=\boldsymbol{A}_{k} s_{k}+\boldsymbol{B}_{k} \boldsymbol{u}_{k} \\ y_{k+1}=f\left(s_{k+1}\right) \end{array}\right. {
sk+1=Aksk+Bkukyk+1=f(sk+1)
其中, s k = ( s 1 , s 2 , ⋅ ⋅ ⋅ , s n ) T s_{k} = (s_{1}, s_{2}, · · · , s_{n})^{T} sk=(s1,s2,⋅⋅⋅,sn)T为当前状态, 代表优化问题的一个候选解; A k \boldsymbol{A}_{k} Ak 或 B k \boldsymbol{B}_{k} Bk 为状态转移矩阵, 可以看成是算法中算子所产生的的变换效果; u k \boldsymbol{u}_{k} uk 为当前状态及历史状态的函数, 可以看成是控制变量; f ( ⋅ ) f(·) f(⋅)为目标函数或者评价函数。
2.2 基本状态转移算法的理论实现
状态转移算法中专门设计了局部、全局和启发式搜索算子,其中全局搜索算子是为了保证有一定概率使产生的候选解集形成的邻域中包含全局最优解; 局部搜索算子具有在较小邻域进行精细搜索的功能;;启发式搜索算子用来产生具有一定潜在价值的候选解,避免搜索的盲目性。 另一方面,状态转移算法中设计了特定的选择与更新策略, 用来适应不同优化问题的需要。 更进一步地, 状态转移算法中实施了智能化策略, 比如全局和局部算子的交替调用,可以很