遗传算法及TSP问题

遗传算法是现代启发式算法的一种。

现代启发式算法共同的特点是:从任意解出发,按照某种机制,以一定该概率在整个求解空间中探寻最优解,具有探寻全局最优的功能。

所有的现代启发式算法最终目的就是寻找全局最优。


遗传算法简介:改编自生物进化规律。在离散的情况下寻找求解空间内全局最优。它不存在求导和函数连续性的限定,具有并行求解的优势。

过程包括:编码,解码,交叉,变异,选择

遗传算法的特点:

       1、群体搜索,这个初始设定的任意解是一个集合。

       2、适应度函数不受连续、可微等条件约束,适用范围广。

       3、它是穷举搜索的提升,根据一定的规则寻找。

(一)编码&解码

       将求解空间映射成字符串,就是一个映射。主要有三种映射方法:01映射、真值映射、符号编码

       1、01映射

             将解空间划分最小区域,这个区域就是精度了。我们知道,遗传算法最大的特征就是离散了,如何将一个连续的区域映射成一群离散点呢。从连续到离散必然会有精度损失的,所以在编码之前要设置一个最小区域的精度,记为△。

             记区域下界为0000000000000

                        上界为111111111111111

             然后在下界的基础上每增加一个△,编码加一,这样就把连续的区域近似映射到了一个个离散的点上。

            比如: 

            00000000…00000000=0                   u_min

            00000000…00000001=1                     u_min+δ

            00000000…00000010=2                    u_min+2δ

                         ……

            11111111…11111111=2l–1                    u_max

            

           解码过程就是逆编码了,就是在下界加上精度的n倍。

       2、真值映射

            真值映射就是,不改变原来的解空间。如果解空间连续,就每隔精度取一个点作为映射点。

       3、符号编码

            不会

(二)适应度函数

        对编码后的解集合要进行一次初次选择,这个选择就要有一定的标准,可根据实际问题选择一个适应度函数,作为区分好坏的标准。

(三)交叉

        交叉其实才是遗传算法的核心所在,它将编码后的解空间按一定规则查找,如果没有交叉,这个遗传算法和随机查找最优其实就没区别了,所以,发生交叉的概率应该设置大一些一般0.9以上,下面有一些交叉方法可供选择:

        1、单点交叉法

        2、双点交叉法

(四)变异

           根据很小的几率随机按照一定规则改变其中一个算子的值。

         1、对换变异

         2、倒置变异

         3、插入变异

         具体规则很简单了。

最终,遗传算法的具体步骤就是编码,解码,计算适应度函数,选择,用交叉变异处理编码,解码,选择。。。。。。一直到满足终止条件。

终止条件一般是在程序开始是设置的遗传代数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值