目录
两者概览
两者的主要应用
可以主要应用于优化问题和搜索问题
GA遗传算法简介
遗传算法(Genetic Algorithms,简称 GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,最终得到最优解或准最优解。它必须做以下操作:初始群体的产生、求每一个体的适应度、根据适者生存的原则选择优良个体、被选出的优良个体两两配对,通过随机交叉其染色体的基因并随机变异某些染色体的基因后生成下一代群体,按此方法使群体逐代进化,直到满足进化终止条件。
抛去生物概念简单来讲就是:理解为数个等长字符数字串(初始种群,当然有不同编码方式),根据问题及字符串数据得到每个字符串的函数值(适者生存,即适应度函数值),随后对得到的字符串可进行字符的改变(变异)或是两个字符串交换一段字符(随机交叉其染色体的基因),得到新一代字符串,选出适应度函数优的字符串群体(适者生存),重复操作知道满足满足要求。
SA模拟退火算法简介
模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。完全冷却时就是问题求解结果。
抛去物理学概念简单来讲就是:一开始设定一个较高的值T(模拟温度,有点类似于循环次数),每次通过一定的原则对原数据进行改变,改变后计算”能量“,根据接受准则决定是否接受改变的数据,直至温度冷却后。算法终止。
GA
一般步骤:
- 根据具体问题确定可行解域,确定一种编码方法,能用数值串或字符串表示可行解域的每一解。(编码方式有多种,一般二进制编码方式居多)
- 对每一解应有一个度量好坏的依据,它用一函数表示,叫做适应度函数,适
应度函数应为非负函数 - 确定进化参数群体规模 M 、交叉概率 pc 、变异概率 pm 、进化终止条件。
编码
编码方式有多种,一般二进制较多,也较为简单。例如求某函数f(x)在[0 10]内的最大值,则可以设置4位二进制数,可表示的数字范围位0~255,代表0到10这个范围的数字被255个数字代替,那么就显然所产生了精度问题,本例的精度为(10-0)/255,可根据求解问题确定适宜的位数。其他涉及的就是二进制与十进制的转化问题。当然还有字符编码,十进制编码(在交叉与变异时会产生问题)
适应度函数
如果是上面那个例子,就是带入x计算函数值比较即可,选择适应度大的作为优良种群。当然如果仅仅选择适应度大的作为下一代,很有可能会使一些目前来看虽然适应度不大但很有潜力(与最优解的自变量值有微小差别)值被淘汰掉而忽略了最优解,那么随之而来就产生一种选择方法,适应度大不代表一定被选中,适应度小不代表无法被选中。比较简单的一种就是轮盘赌法(复杂的我菜也没学),简而言之就是按照每个自变量的的适应度占种群适应度和的比值成为自己的被选中的概率,具体操作见下例:
例:三个自变量的选中概率:0.1 0.4 0.5
那么就可以产生一个0~1的随机数,数字落在0-0.1(区间大小0.1=概率)则选择0.1对应的自变量,落在0.1-0.5(区间大小0.4)选择0.4对应的自变量,落在0.5-1(区间大小0.5)0.1对应的自变量
进化方式(交叉,变异)
对于单纯的二进制编码,变异和交叉都比较简单。
-
变异。就是改变二进制中的某个数字。比如原数据0000 1000对应x值为8
变异结果变成1000 1000对应x值为136,x值变了对应的适应度也产生相应变化,那么种群发生变化就可以选择新种群了 -
交叉,可以单点交叉,也可以多点交叉。单点交叉就是两条等长绳子选择相同比例的一点然后交换该切割点后的两条线段产生新的绳子。例如:0000 0000和1111 1111如果选择第三个点为交叉点,那么就变为1110 0000和0001 1111,值就产生变化。多点交叉同上,就是不止一个点(并不是点越多越好,可以查看一些权威的资料)
-
这时候我们考虑一下,如果采用十进制编码会是什么样子。
0123456789和1234567890交叉变成1233456789和0124567890这就产生了重复,对于上面的对应自变量值是没有问题的,但如果是旅行商问题,每个数字(或者字符)就代表不同的城市,这时出现相同数字就肯定不行了,我们还有一些办法可以交叉后进行修正,这里就不再提及了。
SA
模拟退火算法相较遗传算法理解起来简单一些。
比如对应tsp问题,一个解空间为abdca,计算其路径长度为m
下一步变化该解空间也有一些方法比如交换该序列中某两个字母的顺序,或者将某两个字母间的顺序颠倒等。假设变化后为adbca再次计算路径长度n
按照图示公式进行选择,其中Δf=n-m,p为选择新解的概率,T为当前迭代的温度。(该接受准则中的公式应该是热力学中的一个简化公式)。每次迭代温度不断降低,直至能满足条件或迭代终止即可
个人感想
如有错误,请直接指出
这些乍一看不就是对原数据进行改变吗,虽然一定程度上是启发式搜索,为什么能得到最优解(较好的解)呢,而且哪些改变感觉就是比较随机的改变,可能这就是概率统计中的魅力吧(某些原理吧)
参考自:
1:https://blog.csdn.net/weixin_30352645/article/details/98830852
2:https://blog.csdn.net/qq_34554039/article/details/90294046?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162934942816780264034851%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=162934942816780264034851&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~hot_rank-2-90294046.pc_v2_rank_blog_default&utm_term=%E6%A8%A1%E6%8B%9F%E9%80%80%E7%81%AB%E7%AE%97%E6%B3%95matlab&spm=1018.2226.3001.4450
3《数学建模算法全收录》