《遗传算法求解最短路径问题》由会员分享,可在线阅读,更多相关《遗传算法求解最短路径问题(5页珍藏版)》请在金锄头文库上搜索。
1、遗传算法求解最短路径问题3.3.1最短路径问题的图论描述在G=(V,E,宇)中,与V中的有序偶(Vi, Vj)对应的边e,称为图的有向边, 同时与1中的顶点的无序偶Vi*Vj相对应的边e,称为图的无向边,并且如 果在g= (v, E,?)中,与v中的顶点的无序偶Vi*Vj相对应的边e,全部都是无向边的话, 这个图就叫做无向图,与V中的有序偶(Vi,Vj)对应的边e,都是 有向边的话,这 个图就叫做有向图。为了方便实验,与进行仿真分析,本文所有实验的算法都选用 的是无向图。3.3.2染色体编码具体在进行染色体编码的时候,我么对于各顶点号是进行按自然编排的,然后按照编排的顺序将每个待选的顶点作为一
2、个染色体的基因,基因编排的顺序也就是一 条路径之中出现的先后顺序,所以可以看出来,具体的染色体的总长度应该和顶点 的个数保持持平。3.3.3适应函数对于前面假设的性能函数在此处可以进行一些稍微的改进,因为是求距离, 所以此处我们将前面误差的平方和,看成是各个顶点之间距离的平方和,具体如 下面公式(3-6)以及公式(3-7)所示:2Tf (x) =: E v ( x) =v ) x ( V x(3-6)i=1V( X ) = d (Vj,vi+1)(3-7)具体就是对于求出来多个xi,计算出对应的fi,求出其中最小的f Xmin对应的 Xmin就是最优解。3.3.4选择操作图3-1交叉操作从上一
3、次迭代过程之中的染色体,选择二个染色体作为双亲,而这里具体的染 色体选择的是交叉的节点,这个是根据前面的适应函数选取的,原理就是选择 操作 更容易选择距离较短的二个顶点。3.3.5交叉与变异操作1、交叉操作: 将被选中要进行操作的染色体在进行交叉操作的具体步骤是, 先在染色体上产生一个随机数,然后弄清楚这个随机基因的具体位置,从而确定与这个随机基因 交叉点的位置,一般来说是同一个位置,然后将与这个随机基因在交叉点交叉的基 因进行互换。具体交叉操作的示意图如图3-1所示:11001010101011101110001101100111001100012、变异操作将被选中要进行操作的染色体在进行变异操作的具体步骤是,先在染色体上 产生一个随机数,然后弄清楚这个随机基因的具体位置,然后将这个位置之上的基 因从0变成1,或者从1变成0。变异操作虽然可以改变基因,但是有可能减缓遗传 算法的计算速度。具体变异操作的示意图如图3-2所示:1100101010wnioiiwiiwioioia10111011100011011001iinouncoi图3-2变异操作即达然后具体的设置的条件,也就是上面步骤1设置的目标函数的最优解,到距离 最短,也就是我们所设置的条件。