1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。
杂交算子中,次杂交需要用到母体中的两个个体,若在这两个个体分配在不同进程,则需要进行次通讯。
此后的变异和评估都可以非常容易的实现并行,并且完全不需要任何通讯。
但最后步求最优个体和最差个体需要对各进程进行归约。
由这些分析可以看出,完全地模拟串行情形将使算法变得相当低效。
幸运地是,遗传算法本身是个概率算法,我们完全可以对串行算法作些必要的改变。
如图所示,我们将整个种群分成个子种群,每子种群由个单的进程负责。
各进程地完成串行遗传算法的整个过程,唯不同的是选择函数。
各进程作选择操作时,首先计算各子种群内的局部累积适应度,然后根据局部累积适应度选择若干本算法实现中使用的是常数,也可以设为子种群大小的个函数个体按固定规则轮流发送到其他进程同时,按照该规则相应地从其他进程获取若干用来进行交流的个体。
获取到个体后,先将其暂存然后按串行算法中的选择机制从原子种群中选择进行进化的母体最后再用之前暂存的个体完成进程间的种群交流。
对每个待交流的个体,具体策略如下随机地从本地的待进化母体种群内抽取与之进行交流的母体比较本地个体与传送过来的待交流个体,选取适应度高者作为最终母体。
各进程在每次进化过程中,均分别保留各自的局部最优解,用来在下次进化中替换局部最差的个体。
各进程均完成所预定的进化迭代后,最后对各进程的局部最优解进行归约,从而得到整个算法的全局最优解。
算法的主要流程详见图。
按适应度随机选择参与进化的个体选出最优个体和最差个体,保存最优个体,并将最差个体用上代最优个体替代已完成规定进化代数否输出最优解是开始初始化种群终止初始化种群按适应度随机选择参与进化的个体杂交变异评估选出最优个体和最差个体,保存最优个体,并将最差个体用上代最优个体替代已完成规定进化代数否是归约最优解初始化种群按适应度随机选择参与进化的个体选出最优个体和最差个体,保存最优个体,并将最差个体用上代最优个体替代已完成规定进化代数否是与其他进行交换个体杂交变异评估与其他进行交换个体杂交变异评估与其他进行交换个体图并行遗传算法基本流程四算法实现该算法实现的最关键部分为选择中的种群交流,该功能有如下函数实现,计算子种群的总适应度按优胜劣汰的原则完成种群交流另外,全局最优解的归约由如下代码实现其中,具体的归约操作由如下函数实现,比较适应度复制适应度较高的个体五算法分析与实验结果下面的实验结果是在上利用结点和和获得的。
用来计算最大随机选择交叉点,交叉运算,两个个体的交叉点前的基因进行交换杂交函数产生随机交叉基因如果随机交叉概率小于交叉概率,则进行交叉交叉运算变异函数变异操作选出最优适应度函数和最差个体和分别保存最大适应度和最小适应度和分别保存最优个体和最差个体初始化最大适应度初始化最小适应度输出函数,输出到指定的文件,比较适应度复制适应度较高的个体定义和用于记录运行所需要的时间得到进程数,放入中,确定进程编号,放入中将组内每个进程输入缓冲区中的数据按操作组合起来,并将其结果返回到序号为的进程的输出缓冲区中参考文献威尔金森,艾伦,陆鑫达译并行程序设计机械工业出版社王鹏,吕双,聂志并行计算应用及实践机械工业出版社著,李师贤,蒋爱民等译中文第四版人民邮电出版社遗传算法基于遗传算法求函数最大值指导老师刘建丽学号姓名杨平班级研级班遗传算法遗传算法的基本描述遗传算法,是通过模拟自然界生物进化过程来求解优化问题的类自组织自适应的人工智能技术。
它主要基于达尔文的自然进化论和孟德尔的遗传变异理论。
多数遗传算法的应用是处理个由许多个体组成的群体,其中每个个体表示问题的个潜在解。
对个体存在个评估函数来评判其对环境的适应度。
为反映适者生存的思想,算法中设计个选择机制,使得适应度好的个体有更多的机会生存。
在种群的进化过程中,主要存在两种类型的遗传算子杂交和变异。
这些算子作用于个体对应的染色体,产生新的染色体,从而构成下代种群中的个体。
该过程不断进行,直到找到满足精度要求的解,或者达到设定的进化代数。
显然,这样的思想适合于现实世界中的大类问题,因而具有广泛的应用价值。
遗传算法的每次进化过程中的,各个体之间的操作大多可以并列进行,因此,个非常自然的想法就是将遗传算法并行化,以提高计算速度。
本报告中试图得到个并行遗传算法的框架,并考察并行化之后的些特性。
为简单起见本来应该考虑更复杂的问题,如。
因时间有些紧张,做如等复杂问题怕时间不够,做不出来,请老师原谅,考虑的具有问题是对给定的正整数元函数,以及定义域,求函数在内的最大值。
二串行遗传算法染色体与适应度函数对函数优化问题,个潜在的解就是定义域中的个点,,因此,我们只需用个长度为的实数数组来表示个个体的染色体。
由于问题中要求求函数的最大值,我们可以以个体所代表点,在函数下的值来判断该个体的好坏。
因此,我们直接用函数作为个体的适应度函数。
选择机制选择是遗传算法中最主要的机制,也是影响遗传算法性能最主要的因素。
若选择过程中适应度好的个体生存的概率过大,会造成几个较好的可行解迅速占据种群,从而收敛于局部最优解反之,若适应度对生存概率的影响过小,则会使算法呈现出纯粹的随机徘徊行为,算法无法收敛。
下面我们介绍在实验中所使用的选择机制。
我们定义为当前种群内所有个体的集合为中所有个体的个固定排列。
若为个体,表示该个体的适应度,则种群的适应度定义为对任意个体,的相对适应度定义为。
相对适应度反映了个体的适应度在整个适应度总和中所占的比例。
个体适应度越高,被选中的概率越高。
累积适应度定义为进行选择之前,先产生个到之间的随机实数,若满足,则第个个体被选中。
循环以上过程,即得到生成下代种群的母体。
具体实现见如下函数计算种群适应度之和计算种群的总适应度计算相对适应度计算累积适应度杂交算子杂交算子的流程般如下按杂交概率选择对参与进化的个体随机确定个截断点将两个个体的染色体从截断点处截断,并交换,从而得到新的染色体。
具体算法见如下函数产生随机交叉概率如果随机交叉概率小于交叉概率,则进行交叉得到个交叉点交叉运算,两个个体的交叉点前的基因进行交换变异算子在遗传算法中使用变异算子有两个目的改善遗传算法的局部搜索能力。
维持群体的多样性,防止出现早熟现象。
变异操作的实现相当简单,只需遍历各染色体的各个单元,按变异概率将该单元变成个随机的合法值。
其执行过程是对个体的每个基因组,依变异概率指定为变异点。
对每个指定的变异点,对其基因取非或者用其他等位基因值来代替,从而产生个新的个体。
实现代码如下,定义为随机变异概率串行遗传算法的主要流程如图所示。
在每次进化过程中,总是找出种群中的最优解与最差解,并将最优解保存,将本次最差解用上次保存的最优解替换,这样保证了各次进化的最优解的适应度不会降低,从而增快收敛的速度。
按适应度随机选择参与进化的个体杂交变异评估选出最优个体和最差个体,保存最优个体,并将最差个体用上代最优个体替代已完成规定进化代数否输出最优解是开始初始化终止图串行遗传算法基本流程三算法设计分析图中的串行算法,容易看出,在选择函数中,计算相对适应度需要用到全局种群的适应度之和,计算个体的累积适应度依赖于的累积适应度,如果在并行算法中要原封不动地模拟串行算法的运算,这些数据依赖关系都将产生通讯。
更为不幸的是,选择后的个体需在各进程中作大量数据迁移。
杂交算子中,次杂交需要用到母体中的两个个体,若在这两个个体分配在不同进程,则需要进行次通讯。
此后的变异和评估都可以非常容易的实现并行,并且完全不需要任何通讯。
但最后步求最优个体和最差个体需要对各进程进行归约。
由这些分析可以看出,完全地模拟串行情形将使算法变得相当低效。
幸运地是,遗传算法本身是个概率算法,我们完全可以对串行算法作些必要的改变。
如图所示,我们将整个种群分成个子种群,每子种群由个单的进程负责。
各进程地完成串行遗传算法的整个过程,唯不同的是选择函数。
各进程作选择操作时,首先计算各子种群内的局部累积适应度,然后根据局部累积适应度选择若干本算法实现中使用的是常数,也可以设为子种群大小的个函数个体按固定规则轮流发送到其他进程同时,按照该规则相应地从其他进程获取若干用来进行交流的个体。
获取到个体后,先将其暂存然后按串行算法中的选择机制从原子种群中选择进行进化的母体最后再用之前暂存的个体完成进程间的种群交流。
对每个待交流的个体,具体策略如下随机地从本地的待进化母体种群内抽取与之进行交流的母体比较本地个体与传送过来的待交流个体,选取适应度高者作为最终母体。
各进程在每次进化过程中,均分别保留各自的局部最优解,用来在下次进化中替换局部最差的个体。
各进程均完成所预定的进化迭代后,最后对各进程的局部最优解进行归约,从而得到整个算法的全局最优解。
算法的主要流程详见图。
按适应度随机选择参与进化的个体选出最优个体和最差个体,保存最优个体,并将最差个体用上代最优个体替代已完成规定进化代数否输出最优解是开始初始化种群终止初始化种群按适应度随机选择参与进化的个体杂交变异评估选出最优个体和最差个体,保存最优个体,并将最差个体用上代最优个体替代已完成规定进化代数否是归约最优解初始化种群按适应度随机选择参与
