一、概念
遗传算法GA:遗传算法基于达尔文的进化论,模拟了自然选择,物竞天择、适者生存,通过N代的遗传、变异、交叉、复制,进化出问题的最优解。
交叉、变异、然后择优录取
二、编码
将问题的可行解抽象成为可以被遗传算法使用的形式,需要根据不同的问题进行不同的抽象选择
常用的方式为:二进制编码:用二进制的串来表示一个十进制的数值
eg:给定数值解范围为[1,10],为每个数值分配一个独一无二的二进制串,但串会有精度问题(精度指的是两个实数解的间隔)
如果想实现每一个数值都能分配一个独一无二串,那么串所能表示的数值个数需要大于等于数值解的个数
如果我们有一个长度为n的串,则能表示2**n个数字
三、解码
四、复制-产生新解的一种方式-有多种多样的方式-常用的是轮盘赌法
轮盘赌的思想:适应度越高的解,按道理应该以高概率进行复制,且复制的份数应该越多
五、交叉 ,常用1和2、3和4 以一定的概率进行交叉,随机选取一段进行交叉
六、变异-一般只对适应度不好的后半部分进行变异 ,按照一定的概率决定该个体是否变异,如果变异,随机选择一个位点进行变异,即按位取反。
启发式的算法基本思路:首先是根据了上一次的结果进行分析,其次是基本思想都是择优进化,好的根据一定策略实现更好,坏的根据一定的策略向好的方向发展,如果产生的新解不好,那么就不进行更新了,起码有一个保底,在使用最优算法的时候,需要保证一定空间搜索能力,保证不陷入局部最优的问题。
基本思路可以归纳为:随机选择一个初始解,每次循环再生成一个新解,如果新解好则更新,不好则保留旧解
最重要的方法是:产生新解的方式
参考:b站BV14a411C7s8 up主:青青草原灰太狼