目录

  • 1. 理论基础
  • 2. 算法实现流程
  • 3. 路径规划应用示例
  • 4. 总结


1. 理论基础

遗传算法源自于达尔文进化论的自然选择理念,是一种通过模拟自然进化过程搜索最优解的方法。解决问题时,问题的所有潜在解构成一个种群,种群中不同个体的基因编码不同。初代种群产生以后,根据个体适应度选择个体,并经过遗传学的组合交叉以及变异,产生新的个体,接着继续进行选择,进行迭代,在迭代过程中,使得种群的个体适应度越来越高,最终末代种群的最优个体,便可视为问题的近似最优解。

2. 算法实现流程

(1)种群初始化

首先规定种群中个体的数目n,种群迭代次数k,每个个体的染色体数目m,以及根据实际问题确定染色体编码方式,同时还有种群的交叉概率α,以及变异概率β。

接着,初始化种群中所有个体的染色体类型(一般采用随机生成的方式)

(2)计算适应度

确定个体适应度计算函数,一般适应度与求解目标正相关,如求最短路径时,适应度函数可以设置为:

python遗传算法路径规划算法 遗传算法解决路径规划_动态规划


式中:A为影响因子,D为路径长度。利用适应度函数,计算初代种群中每个个体的适应度。

(3)选择操作

采用轮盘赌法或者锦标赛法等方法,对上一代中的个体进行选择,以生成新一代的种群。

(4)交叉操作

种群中每两个相邻个体的染色体都有α的概率进行交叉操作,当发生交叉操作时,相邻个体的染色体,以规定的交叉比例因子进行交叉,如下图:

python遗传算法路径规划算法 遗传算法解决路径规划_python遗传算法路径规划算法_02


(5)变异操作

种群中每个个体都有β的概率发生变异操作,发生变异时,染色体上的基因在允许范围内随机变异,如下图所示:

python遗传算法路径规划算法 遗传算法解决路径规划_算法_03

(6)计算适应度函数
对新一代个体,进行适应度函数的计算,并记录最优个体。
至此,一次迭代完成,若未到达迭代次数,则转到步骤(3)继续迭代。

3. 路径规划应用示例

对如图所示二维路径规划问题,绿色圆代表障碍物,蓝色小圆形代表中间点。

python遗传算法路径规划算法 遗传算法解决路径规划_迭代_04


(1)首先初始化种群

这里规定个体的每条染色体表示路径上的一个中间点,每条染色体上有两个基因,分别代表点的横纵坐标。

在生成初代种群时,个体染色体的基因坐标必须在规定范围内,即保证中间点必须在规划区域内。

(2)适应度计算与选择

这里的适应度函数可以如第二节中那样规定,同时,由于此问题有避障要求,因此需要添加碰撞检测函数。

碰撞检测函数可以规定为:规定最小路径单元step,在每相邻两个点形成的路径上,以step划分出若干离散点,判断每个离散点是否位于障碍物区间内,如下图所示:

python遗传算法路径规划算法 遗传算法解决路径规划_python遗传算法路径规划算法_05


同时,适应度函数中加入碰撞因子,如下式:

python遗传算法路径规划算法 遗传算法解决路径规划_动态规划_06


式中,c为碰撞因子,若发生碰撞,则c为0,否则为1。

接着,可利用轮盘赌法,锦标赛法等进行选择。上一节介绍过轮盘赌法,因此这里介绍一下锦标赛法。

若种群数目为n,则从上一代中随机选取一半的个体,选择其中适应度函数最高的作为一个新的个体,接着继续从上一代中随机选取一半……如此循环,直至生成所有新一代个体。

(3)交叉与变异操作

首先进行交叉操作,对种群中每两个相邻的个体,生成随机数与交叉概率比较,若大于交叉概率,则按下式进行交叉:

python遗传算法路径规划算法 遗传算法解决路径规划_算法_07


式中,X_old,X_new分别代表交叉前,后的染色体,μ代表交叉比例因子。

接着进行变异操作,同样的,对种群中的每个个体,生成随机数与变异概率比较,若大于变异概率,则按下式进行变异:

python遗传算法路径规划算法 遗传算法解决路径规划_动态规划_08


式中,X_H,X_L分别代表染色体取值上下限,rand为生成的0~1之间的随机数。

(4)计算适应度

经过上述操作后,新一代种群生成,接着计算其中每个个体的适应度,并记录最优个体与最佳适应度值。

至此,一次迭代完成。

4. 总结

本篇主要介绍了遗传算法的理论基础,算法实现流程,并结合具体的二维路径规划问题,介绍了其具体的应用方法。