资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
程序设计及应用实训指导书(Java 语言)昆明理工大学信息工程与自动化学院自动化系张志坤 李勇编2016 年 8 月一、题目题目:利用遗传算法仿真猕猴桃组培苗变异二、目的(1 )掌握 Java 语言开发环境的搭建,掌握 Java 基础编程知识。(2 )学习遗传算法的基本原理,利用遗传算法进行猕猴桃遗传变异模拟。(3 )利用 excel 进行遗传变异数据分析,掌握数据分析方法三、指导教师张志坤、李勇四、地点昆明理工大学呈贡校区信自楼 445。五、时间及进度安排时间:2015 2016 学年短学期(2016 年 8 月 31 日至 2016 年 9 月 9 日)进度安排:日 期 环节进程安排摘要2016-8-31 布置设计任务及环境搭建2016-9-1 程序结构设计2016-9-2 程序编写指导2016-9-5 查阅资料2016-9-6 查阅资料2016-9-7 程序编写、分析数据2016-9-8 报告书编写及指导2016-9-9 程序、报告检查及成绩评定六、设备及器材设备器材:计算机软件:(1)JDK 1.7 及以上;( 2)Eclipse-standard-luna;七、成果要求实训同学要求完成(一) 、 (二) 、 (三) 、 (四) 、 (七)程序设计及应用同学要求完成(一) 、 (二) 、 (三) 、 (四) 、 (五) 、 (六) 、 (七)(一) 、遗传算法的基本原理遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域,是现代有关智能计算中的关键技术。遗传算法的基本运算过程如下:(1 )初始化:设置进化代数计数器 t=0,设置最大进化代数 T,使用 M 个个体作为初始群体 P(0)。(2 )个体评价:计算群体 P(t)中各个个体的适应度。(3 )选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上,利用轮盘赌进行选择。(4 )交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。(5 )变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体 P(t)经过选择、交叉、变异运算之后得到下一代群体 P(t+1)。(6 )终止条件判断:若 t=T ,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。确定实际问题参数集对参数集进行编码初始种群满足停止规则?遗传操作产生新一代种群结束1 位串编码的参数2 计算目标函数值3 函数值向适应度值映射4 适应度值调整评价种群三个基本算子1 选择2 交叉3 变异图 1 遗传算法解决问题的步骤遗传算法进行问题求解的实质是,在解的空间中不断遗传,而遗传过程中通过适应度值,选择更适应问题的解作为幸存者和后代,逐步逼近最优解。1、选择:从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子(reproduction operator)。选择的目的是把优化的个体( 或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法等。其中轮盘赌选择法 (roulette wheel selection)是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。显然,概率反映了个体 i 的适应度在整个群体的个体适应度总和中所占的比例。个体适应度越大。其被选择的概率就越高、反之亦然。计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个0,1之间均匀随机数,将该随机数作为选择指针来确定被选个体。个体被选后,可随机地组成交配对,以供后面的交叉操作。2、交叉在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异) 。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:1)实值重组(real valued recombination)2)离散重组(discrete recombination)3)中间重组(intermediate recombination)4)线性重组(linear recombination)5)扩展线性重组(extended linear recombination) 。6)二进制交叉(binary valued crossover)7)单点交叉(single-point crossover)8)多点交叉(multiple-point crossover)9)均匀交叉(uniform crossover)10)洗牌交叉( shuffle crossover)11)缩小代理交叉( crossover with reduced surrogate) 。最常用的交叉算子为单点交叉(one-point crossover)。具体操作是:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。下面给出了单点交叉的一个例子:个体 A:1 0 0 1 1 1 1 1 0 0 1 0 0 0 新个体个体 B:0 0 1 1 0 0 0 0 0 1 1 1 1 1 新个体3、变异变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:a)实值变异b)二进制变异。一般来说,变异算子操作的基本步骤如下:a)对群中所有个体以事先设定的变异概率判断是否进行变异b)对进行变异的个体随机选择变异位进行变异。遗传算法引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。显然,此种情况下的变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。此时收敛概率应取较大值。遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。所谓相互配合.是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动(以变异概率 P.做变动) ,(0 ,1)二值码串中的基本变异操作如下:基因位下方标有* 号的基因发生变异。变异率的选取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取 0.0010.1。4、终止条件当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设的代数一般设置为 100-500 代。(二) 、Java 开发环境搭建1、 JDK 的获取从 Oracle 公司的网站上可以免费获取各种版本的 JDK,Oracle 公司的网址www.oracle.com。注意这次设计实用的是 JDK 1.72、 JDK 的安装及环境变量的配置JDK 有安装版和直接解压版。安装版安装方法如下:(1 )找到下载的安装包,双击运行。注意:如果是 32 位系统运行 jdk-7u60-windows-i586.exe,64 位操作系统运行 jdk-7u60-windows-x64.exe。(2 )按照系统提示安装 JDK,需注意的是再安装时安装路径尽量不要再 C 盘,并且安装路径不要包含空格和中文。(3 )环境变量配置Windows XP:在桌面右击“我的电脑” ,然后单击“属性” ,在“系统属性”对话框中选择“高级”选项卡,然后单击“环境变量”按钮,打开“环境变量”对话框,找到“系统变量”中名为 Path 的行,单击编辑,将 JDK 中 bin 目录的安装路径加入到环境变量中。为了编程方便可以新建一个 classpath 的环境变量,并将 JDK 中 lib 目录的安装路径加入到该环境变量中。Windows 7,windows 8,windows 8.1:在桌面右击“我的电脑” ,然后单击“属性” ,在“系统”对话框中选择“高级系统配置” ,在打开的“系统属性”对话框中选择“高级”选项卡,然后单击“环境变量”按钮,打开“环境变量”对话框,找到“系统变量”中名为 Path 的行,单击编辑,将 JDK 中 bin 目录的安装路径加入到环境变量中。为了编程方便可以新建一个 classpath 的环境变量,并将 JDK 中 lib 目录的安装路径加入到该环境变量中。3、 Eclipse 的获取与安装Eclipse 是 IBM 的开源项目,可以从 Eclipse 官方网站( http:/www.eclipse.org )免费获取。将下载的压缩包解压至一个不包含中文字符的目录下,即完成安装。双击 eclipse.exe 打开 eclipse。(三) 、遗传算法编写指导采用 4 位 DNA 编码,M 条基因,交叉 2 带的计算。采用四进制编码。 0,1,2,3 分别代表G,A , T,C 即: 。用编码随机产生一个小数 ,进过筛=12G0C=3; ; ; x0,1选适应度后,进行交叉、变异计算后输出计算结果要求学生根据下面的指导的内容,配置下面的代码,并能够正确运行,阅读并理解下面代码的含义。1、包的定义package geneTest;2、基因类(Gene )public class Gene implements Cloneable protected String allele;/ 等位片段public String getAllele() return allele;public void setAllele(String allele) this.allele = allele;Overridepublic Object clone() throws CloneNotSupportedException Gene g = null;try g = (Gene)super.clone(); g.allele = new String(allele); catch(CloneNotSupportedException e ) System.out.println(e.getMessage(); return g;3、基因型类(GeneType)public class GeneType implements Cloneableprotected Gene gene;/ 基因序列片段public Gene getGene() return gene;public void setGene(Gene gene) this.gene = gene;public GeneType(GeneType geneType) super();this.gene = geneType.getGene();public GeneType() Overridepubl
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号