遗传算法入门
遗传算法简介
2遗传算法2.1理论简介2.1.1基因和染色体1)概述
遗传算法中的每个染色体都对应于遗传算法的溶液。通常,我们使用健身函数来衡量该解决方案的优势和缺点。因此,从基因组的适应性到其溶液的适应性形成了地图。遗传算法的过程可以视为在多元函数中找到最佳解决方案的过程。可以通过这种方式可以想象,在这个多维表面中存在无数的“峰”,而这些峰对应于局部最佳解决方案。而且还将有一个高度最高的“山地”之一,因此这是全球最佳解决方案。遗传算法的任务是尝试爬到最高峰,而不是落入一些小峰。 (此外,值得注意的是,遗传算法不必找到“最高山”。如果问题的适应性评估较小,则越好,则全局最佳解决方案是该功能的最小值,相应地,相应地kaiyun全站登录网页入口,遗传算法希望发现它是“最深的山谷”)
2)相关问题
我们可以查看以下简单问题,对于一函数f(x)=xsin(10πx)+2x∈[−1,2] f(x)= x \ sin(10 \ pi x)+2 \ sin \ \ \ \ x \ in [-1,2] f(x)= xsin(10πx)+2x∈[−1,2]要求在给定的间隔中找到最大函数值:
这样的问题是遗传算法需要解决的问题。我们随机生成种群,然后基于人口适应性选择,交叉,突变,复制和其他操作,以获得与功能曲线相符的最大值。请注意,该算法获得的最大值不一定是全球最佳的,并且由于某些参数或数据集尺寸的局限性,我们将很容易属于本地最佳状态。
2.1.2袋鼠跳跃问题
由于我们将功能曲线理解为由山峰和山谷组成的山脉。然后我们可以想象,我们得到的每个解决方案都是袋鼠,我们希望他们继续跳到更高点,直到它们跳到最高峰(尽管袋鼠本身不一定愿意这样做)。因此,查找最大值的过程将转换为“袋鼠跳跃”。比较,以下是对“袋鼠跳跃”的几种方法的简要介绍:
1)登山方法(速度最快的攀岩方法)
从搜索空间随机创建相邻点,使用相应的解决方案最佳选择个体,替换原始个人,然后连续重复上述过程。由于登山方法仅比较“接近”点,因此目光相对“短暂地思考”,并且通常只能收敛到更接近初始位置的局部最佳解决方案。对于许多本地最优性问题,通过简单迭代找到全局最佳解决方案的机会非常苗条。 (在远足方法中,袋鼠最希望到达最接近其起点的山顶,但不能保证它是珠穆朗玛峰或一座高山。因为一路走来,它只会在乎上坡,不会下坡。)
2)模拟退火
该方法灵感来自金属热处理过程。在金属热处理过程中,当金属的温度超过其熔点(熔点)时,原子将剧烈和随机移动。与所有其他物理系统类似,原子的这种运动往往会发现其能量的很小状态。在这种能量变化过程中,一开始的温度很高,这使原子具有很高的能量。随着温度继续降低,金属逐渐冷却,金属中原子的能量越来越小,最终达到所有可能的最低点。使用模拟退火时,让算法从更大的跳跃开始,以便它具有足够的“能量”来逃避可能“通过”而不用限制的本地最佳解决方案,而当它在全局最佳解决方案附近停止时。跳跃逐渐减少时,跳跃的量减少,以便可以将其“设置”到全局最佳解决方案。 (在模拟的退火中,袋鼠喝醉了很长一段时间。这是。 )
3)遗传算法:
模拟美学的生物演化过程,通过维持一系列潜在解决方案并支持这些方向上信息的组成和交流,从而执行多个方向搜索。这是基于表面的搜索,它可以比基于点的搜索更好地发现全局最佳解决方案。 (在遗传算法中,有许多袋鼠在喜马拉雅山的任何地方降落。这些袋鼠不知道他们的任务是找到珠穆朗玛峰。但是每隔几年,它在某些地方有较低的高度。射击一些袋鼠和希望。生存是多产的,要生下孩子的地方)(或者以换句话说。无色的毒气充满了较低的高度,毒气越来越薄,但袋鼠越来越少在较低的海拔地区,袋鼠在较高的海拔地区,他们可以寿命的时间越长,并且在很多年之后,他们必须有更多的孩子。袋鼠,只有聚集在珠穆朗玛峰的袋鼠被带回美丽的澳大利亚。
2.1.3遗传算法概述1)概述
遗传算法的实施过程实际上就像本质上的进化过程一样。首先,我们寻找一种“数字化”问题解决方案的解决方案。 (在表型和基因型之间建立映射关系),然后初始化具有随机数的种群(然后,第一批袋鼠在山上随机散布),而人口中的个体是这些数字代码。接下来,在适当的解码过程(获取袋鼠的位置坐标)之后,使用适应性函数来评估每个基因个体的适应性(袋鼠攀爬越高,我们喜欢它越多,那么适应性就越高。高)。根据某些法规,使用选择功能最佳选择(我们需要偶尔在山上的较低高度拍摄一些袋鼠,以确保袋鼠的总数保持不变。)。让单个遗传突变(让袋鼠随机跳跃)。然后产生后代(希望生存的袋鼠是多产的,那里有孩子)。遗传算法不能保证您可以为问题提供最佳解决方案,但是使用遗传算法的最大优势是,您不必了解和担心如何“找到”最佳解决方案。 (您不必指导袋鼠跳到那里,它将跳到多远。)只是“否定”一些表现不佳的人。 (拍摄总是喜欢下坡的袋鼠,这是遗传算法的本质!)
2)一般步骤
start while loss <= x: //开始循环直至找到满意的解
1.评估每条染色体所对应个体的适应度。
2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。
3.抽取父母双方的染色体,进行交叉,产生子代。
4.对子代的染色体进行变异。
5.重复2,3,4步骤,直到新种群的产生。
end while; //结束循环
2.2算法详细信息2.2.1基因编码1)二进制编码
受到人类染色体结构的启发,我们可以想象,假设当前只有两个碱基为0/1,我们还使用链条以有序的方式连接它们,因为每个单元都可以表达1位信息。因此,染色体足够长的时间可以概述个人的所有特征。这是二进制编码方法,染色体大致如下:
010010011111111111111111111111111111111111111111111111110010011111111111111111
2)浮点编号编码
相对而言,二进制编码具有简单性和直觉的特征,但是显然,当个人特征相对复杂时,需要大量编码才能准确描述它。相应的解码过程(类似于生物学中的DNA翻译过程,即使用基因。提出映射到表型的过程太麻烦了kaiyun全站网页版登录,提出了编码的浮点数编码,以提高遗传算法和遗传算法的计算复杂性提高计算效率。
1.23.32.05.42.74.31.2 \ \ 3.3 \ 2.0 \ 5.4 \ 2.7 \ 4.31.23.32.05.42.74.34.34.3
3)模型提取
如果我们无法准确确定哪些“个人特征”是必要的,哪些是必要的,我们通常可以使用这种思维方式:例如,您认为Kangaroos喜欢吃什么非常必要,那么您会考虑一下。我认为有两个袋鼠。当他们的其他个人特征完全相同时,一个生长黑色,另一个人并不是黑色的。您会立即发现这不会对他们的命运产生任何影响,他们应该具有相同的射击可能性!只是因为他们在同一地方。 (值得一提的是,如果您的基因编码设计包含有关袋鼠是否是黑色的信息,它实际上不会影响袋鼠的演变,而爬上珠穆朗玛峰的袋鼠是黑白的。但是它的位置很确定。
以上是在遗传算法的编码过程中必须经历的思维过程。在数学模型中抽象特定问题,突出主要矛盾,放弃次要矛盾。只有这样,问题才能清楚,有效地解决。
由于袋鼠的位置被确定为单个特征,因此该位置特别是水平坐标。然后,我们需要在表型和基因型之间建立映射关系。也就是说,如何使用编码来表达袋鼠的水平坐标。由于水平坐标是一个实际数字,因此我们需要在彻底编码此实数。回顾我们上面介绍的两种编码方法,首先想到的是,对于二进制编码方法,编码将更加复杂,而对于浮点数编码方法,它将更简洁。好吧,正如您所想的那样,使用浮点数编码只需要浮点数。以下描述了如何建立将二进制编码的映射到实数。
2.1.2健身得分和民间运动的选择1)健身 - 健身功能(健身功能)
本质上的生物竞争过程通常包括两个方面:生物与生物与客观环境之间的斗争之间的斗争。但是在我们的例子中,您可以想象袋鼠彼此非常友好,他们不需要互相抗争以生存权。他们的生与死更多地取决于您的判断。因为您必须衡量应杀死哪种袋鼠,并且不应杀死哪个袋鼠,所以您必须设定测量标准。对于这个问题,该措施更容易制定:袋鼠的高度。 (因为您只是希望袋鼠尽可能高。)因此,我们直接将袋鼠的高度作为其适应性得分。也就是说,健身函数只需要直接返回功能值即可。
2)tianse-选择功能(选择)
选择函数的含义是从庞大的人群中选择具有最高适应性的组。当然,这里的选择不等于分类和拦截的过程。它的选择是一种概率选择,即具有较高适合度的群体。被选中的机会越大。在自然界中,适应性的人越多,他们就越有可能繁殖后代。但是不能说适应性越高,后代就越多,而且只能是概率越多。 (毕竟,较低高度的一些袋鼠很幸运并逃脱了您的眼睛)那么我们如何建立这种概率关系?下面我们引入了一种常用的选择方法。
轮盘赌轮选择方法
如果我们有五个染色体,则每个染色体的健身得分为:5、10、20、20、45
然后其累积适应性为:5 + 10 + 20 + 20 + 45 = 100
因此,选择每个染色体的概率是:
x1 = 5100 = 5%x2 = 10100 = 10%x3 = 20100 = 20%x4 = 20100 = 20100 = 20%x5 = 45100 = 45%x_1 = \ frac {5} {100} {100} = 5 \%\%\\ x_2 = \ frac = \ frac {10} {100} = 10 \%\\ x_3 = \ frac {20} {100} = 20 \%\\ x_4 = \ frac {20} {100} = 20 \%\%\%\\ x_5 = \ frac {45 } {100} = 45 \%\\ x1 = 1005 = 5%x2 = 10010 = 10%x3 = 10020 = 20%x4 = 10020 = 20%x5 = 10045 = 45%
根据不同的概率,我们可以获得以下风扇图,也可以将其视为轮盘赌。
因此,我们可以想象我们将指针旋转,然后旋转车轮,而指向指向的位置是我们选择的染色体。这突出了我们前面提到的特征,即健身个人越大,选择它就越容易。
冠军选择算法
遗传算法中的冠军选择策略每次都需要一定数量的人(放回样本),然后选择最佳的人进入后代人群。重复此操作,直到新的人口规模达到其原始人口规模。几美元的锦标赛是一次从人口中夺走几个人,然后将最佳个人从这些人中夺走,并将其放在下一代人口中保留的集合中。特定的操作步骤如下:
①确定每次n时选择的个体数量。(在二进制锦标赛中选择两个人)
②从人口中随机选择n个个体(每个人都有相同的选择概率),并且根据每个人的健身价值,选择具有最佳健身价值的个体以进入下一代人。
③重复步骤②多次(重复的数量是人口的大小),直到新的人口规模达到原始人口规模。
2.1.3基因重组/交叉
遗传算法的每种迭代都会产生N染色体。在遗传算法中,每种迭代都称为“进化”。那么,新生成的染色体如何来自每个进化? - 答案是“交叉”,您可以将其理解为交配。
穿越的过程需要从上一代找到两个染色体,一个是父亲,另一个是母亲。然后将两个染色体之一切断并剪接在一起以形成新的染色体。这个新的染色体包含一定数量的爸爸基因和一定数量的妈妈基因。
[外部链接图像被转移给公众失败。源部位可能具有反盗用链路机制。建议保存图像并将其直接上传(IMG-9ZKFJCNN-1634202237858)(IMG/Image-202110122221350435.PNG)]
那么,如何从上一代染色体中选择父母的基因?这不是随机选择的kaiyun官方网站登录入口,而是通常通过轮盘算法完成的。
每个演化完成后,必须计算每个染色体的适应性,并使用以下公式来计算每个染色体的适应性概率。然后,在执行交叉过程时,有必要根据此概率选择父染色体。选择染色体较高的染色体的可能性越高。这就是为什么遗传算法可以保留出色的基因的原因。
选择染色体I的概率=染色体I /所有染色体的适应性
2.1.4基因突变/突变(突变)
跨界可以确保每个进化都会留下出色的基因,但是它只能选择原始结果集,并且仍然只有几个基因,但是它们交换了组合顺序。这只能确保在n个进化后,计算结果更接近局部最佳解决方案,并且永远无法达到全局最佳解决方案。为了解决这个问题,我们需要引入突变。
突变很容易理解。在通过跨变形产生新的染色体后,我们需要在新染色体上随机选择几个基因,然后随机修改基因值,从而将新基因引入现有染色体,并突破当前的搜索限制,并且它是它有利于查找全局最佳解决方案的算法。
例如,简单的二进制基因串可以通过突变从之前获得不同的序列结果。
101101001011001 Mutation before 00110110110101001 Mutation after 10110101011001 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
2.1.5副本
在每种进化中,为了保留上一代的出色染色体,上一代中最适应性的染色体需要直接复制到下一代完整。
假设需要为每个演化生成N染色体,则需要通过横截面生成NM染色体,并且通过复制上一代中适应最高的M染色体来生成其余的M染色体。
2.1.6算法过程
以上都是准备过程,以下是正式进入“进化”过程。
到目前为止,已经生成了N染色体!此后,计算了N染色体的适应性和下次选择的概率。
这是一个进化过程,其次是新的进化过程。
百度百科全书
遗传算法的基本操作过程如下:
①初始化:设置进化代数计数器t = 0,设置最大进化代数t,然后随机生成m个个体作为初始组P(0)。
②个人评估:计算P组(t)组中每个人的适应性。
③选择操作:使用选择操作员到组。选择的目的是将优化的个体直接继承到下一代,或通过配对和交叉来产生新个体。选择操作基于对组中个体的适应性评估。
⑤交叉操作:将跨操作员用于组。遗传算法的核心作用是跨操作员。
⑥突变操作:将突变算子用于组。也就是说,在人群中单个字符串的某些基因座上更改基因值。选择,穿越和突变操作后,P组(T)获得了下一代P(T+1)。
终止条件判断:如果t = t,将通过以在演变过程中获得最大适应性的个人作为最佳解决方案输出来终止计算。
遗传操作包括以下三个基本遗传操作员:选择;跨界;突变。
提示:以上注释是根据两个博客总结的,以及您自己的理解和摘要。引用链接附上供您参考。
引用来自:Blog1 Blog2