0、参考文献
本节旨在研究遗传算法(GA)及其相关衍生算法在计算卸载系统中的应用。基于遗传算法(GA)的计算卸载策略的求解(一)(二)均基于论文《改进GA的边缘计算任务卸载与资源分配策略_贾觐》、《改进遗传算法的边缘计算卸载策略_葛海波》、《基于遗传算法的移动边缘计算混合关键任务卸载_邓添》、《一种基于遗传算法的多边缘协同计算卸载方案_高基旭》、《一种基于遗传算法的多站点协同计算卸载算法_季子豪》。
1、遗传算法简介
遗传算法(Genetic Algorithm,GA)是模拟生物在自然环境中的遗传和进化的过程而形成的自适应全局优化搜索算法。
更新策略的核心就是复制、交叉和变异,但是这几个操作如何实现呢,我们提出了将十进制的接转化为二进制的编码,全部将解变为0和1的组合,复制操作的话就直接进行复制,交叉的话直接将对应位置的二进制编码进行交叉互换,变异直接就是将0变为1或者将1变为0;最后我们求解到最优解的话可以直接对我们的二进制解进行解码,就得到我们的十进制的最优解。
复制也存在一些复制的策略,一般用的较多的就是轮盘赌法,将个体适应度大小映射为概率进行复制,应度高的个体有更大概率复制,且复制的份数越多;交叉:按顺序,两两个体之间按概率交叉。变异:每个个体都进行变异,或者选择其他的变异策略,可以不是每个个体都变异,相关的策略自己制定。
基本概念:
染色体和基因:在遗传算法中,问题的一个可行解被称为一条“染色体”,一个可行解可以有多个元素组成,每个元素称为一个“基因”。
适应度函数:在自然界中,似乎存在着一个上帝,它能够选择出每一代中比较优良的个体,而淘汰一些环境适应度较差的个人。那么在遗传算法中,如何衡量染色体的优劣呢?这就是由适应度函数完成的。适应度函数在遗传算法中扮演者这个“上帝”的角色。遗传算法在运行的过程中会进行N次迭代,每次迭代都会生成若干条染色体。适应度函数会给本次迭代中生成的所有染色体打个分,来评判这些染色体的适应度,然后将适应度较低的染色体淘汰掉,只保留适应度较高的染色体,从而经过若干次迭代后染色体的质量将越来越优良。
交叉:染色体通过交叉,生成下一代更优秀的染色体。
变异:当我们通过交叉生成了一条新的染色体后,需要在新染色体上随机选择若干个基因,然后随机修改基因的值,从而给现有的染色体引入了新的基因,突破了当前搜索的限制,更有利于算法寻找到全局最优解。
复制:每次进化中,为了保留上一代优良的染色体,需要将上一代中适应度最高的几条染色体直接原封不动地复制给下一代。
2、算法步骤
遗传算法的基本步骤:
![](https://img-blog.csdnimg.cn/img_convert/1fe45f50bd41ef20fdcf8c71e161d861.png)
编码:GA在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据,这些串结构数据的不同组合便构成了不同的点;
浮点数编码:是指将个体范围映射到对应浮点数区间范围,精度可以随浮点数区间大小而改变。
![](https://img-blog.csdnimg.cn/img_convert/b32c5011517393f27c7c9ed6f53369d4.png)
初始群体生成:随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个个体构成了一个群体。GA以这N个串结构数据作为初始点进行进化;
适应度评估:适应度表明个体或解的优劣行,不同的问题,适应度函数的定义也不同。
选择:选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁殖子孙。遗传算法通过选择过程体现这一思想,进行选择的原则是适应性强的个体为下一代贡献一个或多个后代的概率大。选择体现了达尔文的适者生存原则;
交叉:交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体,新个体组合了其父辈个体的特性。交叉体现了信息交换的思想;
变异:变异首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机的改变串结构数据中某个串的值。同生物界一样,GA中变异发生的概率很低,通常取值很小。