该账号是华为云开发者社区的官方运营账号,提供全面深入的云计算前景分析,丰富的技术干货、程序样本,分享华为云前沿资讯动态。
本文分享自华为云社区《智能优化算法(一)——遗传算法》。原作者:我是大西瓜。
智能优化算法又称现代启发式算法,是一种具有全局优化性能、通用性强、适合并行处理的算法。一般这种算法都有严格的理论基础,而不是单纯依靠专家经验。理论上可以在一定时间内找到更优解或近似更优解。常用的智能优化算法包括遗传算法、模拟退火算法、禁忌搜索算法、粒子群优化算法和蚁群算法。
本文主要为大家带来遗传算法和蚁群算法的详细解读。
遗传算法(Genetic algorithm,GA)是一种自适应(遗传参数的自适应调整)全局优化(随机变异不断寻求全局更优解)算法,模拟生物在自然环境中的遗传和进化。它的基本思想是“适者生存”,是应用最广泛、最有效的算法。
算法对个体(即解)进行二进制编码(01编码)、自然数编码、实数编码和树编码。在计算个体的适应度时,需要解码来实现问题的解空和算法search 空之间的相互转换。
每个个体都有一个适应度函数,这是算法“优胜劣汰,适者生存”的基础。适应度函数需要根据目标函数来设置,这样g(x)g(x)表示目标函数,G(x)G(x)表示适应度函数。从目标函数g(x)g(x)到适应度函数G(x)G(x)的映射过程称为校准。
对于更大值优化问题,可以直接将g(x)g(x)设定为适应度函数G(x)G(x),即G(x)= G(x)G(x)= G(x);对于极小优化问题,g(x)=-\ min g(x)g(x)= Ming(x);在遗传算法中,适应度函数是正的,但上述两个公式不能保证,需要加上最小值或更大值和分段函数。
选择是从当前种群中选择适应度函数值大的个体。这些优秀的个体可能会作为父母繁衍下一代。个体的适应度函数越大,被选为亲本的概率越大(可能!)
有许多算法可供选择,最基本的一种是轮盘赌算法:
p _ I =\frac{f_i}{\sum_{i=1}^{n}f_i}pi =∑I = 1n fi fi
其中P_iPi代表个体被选中的概率;F_iFi代表个体的适应度函数值;NN表示人口规模。
根据选择概率P_iPi将圆盘形赌轮分成NN个部分,第二个扇形的圆心角为2\pi P_i2πPi。生成一个0-1之间服从均匀分布的随机数rr,在第二个扇区的累计下跌概率为Q _ I = \ sum _ {j = 1} I p _ jqi = ∑ j = 1ipj,然后选择个体ii,重复NN次选择NN个个体。
两个个体通过染色体的某些基因交叉重组产生一个新的个体,即产生一个新的解。穿越前需要随机配对。
二进制编码的个体一般采用点交叉法,即从两个成对的字符串中随机选取一个或多个交叉点,交换一些子字符串生成新的字符串。
两个个体是否进行交叉操作是由交叉概率决定的。较大的交叉概率可以使遗传算法产生更多的新解,保持种群多样性,防止算法早熟。但过大的交叉概率会使算法过多地搜索不必要的解区域,消耗过多的计算时间,一般在0.9左右。
在生物的进化过程中,一些染色体可能发生基因突变,产生新的染色体,这是产生新解的另一个重要途径。交叉操作相当于全局探索,变异操作相当于局部发展,这是智能优化算法必备的两种搜索能力。
个体能否变异取决于变异概率。如果太低,一些有用的基因无法进入染色体,解的质量无法提高。过多会使后代失去父代的优秀基因,导致算法失去从过去搜索经验的学习能力。一般来说,突变概率在0.005左右。
值得注意的是鲁道夫用马尔可夫链相关理论证明了只有选择、交叉、变异三种操作的遗传算法不能收敛到全局更优解,而有精英保留策略的遗传算法是全局收敛的。
算法的整体流程如下图所示:
一个好的智能算法的关键在于全局探索和局部发展的平衡。全局探索的目的是更全面地探索解空,而局部开发的主要目的是更精细地搜索已知区域,希望获得质量更好的新解。
遗传算法可以通过设置选择压力来实现全局探索和局部发展的平衡。在算法运行的初始阶段,设置较小的选择压力可以使算法具有更好的全局探索能力,进行广域搜索;在算法运行的后期,设置较大的选择压力可以使算法进行更细致的局部搜索。
所选择的压力设置可以通过适应度函数进行校准,并且可以选择策略。
适应度函数标定,在算法前期,要缩小个体适应度差距,降低淘汰率;在算法运行的最后阶段,扩大了个体适应度的差距,使算法能够在高适应度个体对应的解区域内密集搜索,加快了算法的收敛速度。常见的 *** 有:
线性尺度变换 H= aF bH=aF b\sigmaσ截断法 H= F (\hat F - c\sigma)H=F (F^−cσ)幂律尺度变换 H= F^\alphaH=Fα
选择策略,低选择压力可以选择各种类型的个体,加强对未知解区域的搜索,避免算法陷入局部极值,但算法的优化速度会变慢;高的选择压力可以选择优秀的个体,加快优化速度,但种群的多样性会降低,降低搜索到全局更优值的概率。除了轮盘赌算法,选择策略还有:
分级选择法锦标赛选择法Boltzmann选择法
蚁群优化(Ant ColonyOptimization,ACO)算法是一种起源于自然界生物界的模拟算法,其思想吸收了蚁群在觅食过程中的行为特征。蚁群算法在TSP问题、二次分配问题、图着色问题、车辆调度问题和通信 *** 中的负载均衡问题中表现出了良好的优化性能。
自然界的蚂蚁没有视觉,依靠环境中同伴散发的信息素来决定去向。孤立的蚂蚁沿着同伴的信息素轨迹移动,同时释放自己的信息素,从而增加了这条路线上的信息素数量。随着越来越多的蚂蚁经过这条路线,就形成了一条更好的路线(这条路线不一定是最短的,但对于NP难问题来说已经足够了)。
以TravelingSale *** an问题,TSP)为例,在图论中称为最小汉密尔顿问题。
记G = (V,E)G=(V,E)为赋权图,V=(1,2,3,...,N)V=(1,2,3,...,N)为顶点集,EE为边集,各顶点间的距离d_{ij}dij已知(d_{ij}