实验三、基本遗传算法设计实验
MATLAB实验遗传算法与优化设计(可编辑)
MATLAB实验遗传算法与优化设计遗传算法与优化设计一实验目的1 了解遗传算法的基本原理和基本操作选择交叉变异2 学习使用Matlab中的遗传算法工具箱 gatool 来解决优化设计问题二实验原理及遗传算法工具箱介绍1 一个优化设计例子图1所示是用于传输微波信号的微带线电极的横截面结构示意图上下两根黑条分别代表上电极和下电极一般下电极接地上电极接输入信号电极之间是介质如空气陶瓷等微带电极的结构参数如图所示Wt分别是上电极的宽度和厚度D是上下电极间距当微波信号在微带线中传输时由于趋肤效应微带线中的电流集中在电极的表面会产生较大的欧姆损耗根据微带传输线理论高频工作状态下假定信号频率1GHz电极的欧姆损耗可以写成简单起见不考虑电极厚度造成电极宽度的增加图1 微带线横截面结构以及场分布示意图1其中为金属的表面电阻率为电阻率可见电极的结构参数影响着电极损耗通过合理设计这些参数可以使电极的欧姆损耗做到最小这就是所谓的最优化问题或者称为规划设计问题此处设计变量有3个WDt它们组成决策向量[W D t] T待优化函数称为目标函数上述优化设计问题可以抽象为数学描述2其中是决策向量x1xn为n个设计变量这是一个单目标的数学规划问题在一组针对决策变量的约束条件下使目标函数最小化有时也可能是最大化此时在目标函数前添个负号即可满足约束条件的解X 称为可行解所有满足条件的X组成问题的可行解空间2 遗传算法基本原理和基本操作遗传算法 Genetic Algorithm GA 是一种非常实用高效鲁棒性强的优化技术广泛应用于工程技术的各个领域如函数优化机器学习图像处理生产调度等遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化算法按照达尔文的进化论生物在进化过程中物竞天择对自然环境适应度高的物种被保留下来适应度差的物种而被淘汰物种通过遗传将这些好的性状复制给下一代同时也通过种间的交配交叉和变异不断产生新的物种以适应环境的变化从总体水平上看生物在进化过程中子代总要比其父代优良因此生物的进化过程其实就是一个不断产生优良物种的过程这和优化设计问题具有惊人的相似性从而使得生物的遗传和进化能够被用于实际的优化设计问题按照生物学知识遗传信息基因Gene 的载体是染色体Chromosome 染色体中一定数量的基因按照一定的规律排列即编码遗传基因在染色体中的排列位置称为基因座Locus在同一个基因座上所有可能的基因就称为等位基因Allele生物所持有的基因以及基因的构成形式称为生物的基因型Genotype而该生物在环境中所呈现的相应性状称为该生物的表现型Phenotype在遗传过程中染色体上的基因能够直接复制给子代从而使得子代具有亲代的特征此外两条染色体之间也通过交叉 Crossover 而重组即两个染色体在某个相同的位置处被截断其前后两串基因交叉组合而形成两个新的染色体在基因复制时也会产生微小的变异Mutation从而也产生了新的染色体因此交叉和变异是产生新物种的主要途径由于自然选择在子代群体新产生的物种或染色体当中只有那些对环境适应度高的才能生存下来即适应度越高的被选择的概率也越大然后又是通过遗传和变异再自然选择一代一代不断进化因此生物遗传和进化的基本过程就是选择即复制交叉和变异遗传算法就是通过模拟生物进化的这几个基本过程而实现的①编码编码是设计遗传算法首要解决的问题在生物进化中选择交叉变异这些基本过程都是基于遗传信息的编码方式进行的即基于染色体的基因型而非表现型因此要模拟生物进化过程遗传算法必须首先对问题的可行解X决策向量进行某种编码以便借鉴生物学中染色体和基因等概念在遗传算法中将每一个决策向量X用一个染色体V来表示3其中每一个vi代表一个基因染色体的长度m不一定等于设计变量的数目n取决于染色体上基因的编码方式一般有两种编码方式二进制编码和浮点数编码如果是二进制编码每一个设计变量xi的真实值用一串二进制符号0和1按照一定的编码规则来表示每个二进制符号就代表一个基因因此染色体长度要远大于设计变量的数目这种由二进制编码构成的排列形式V就是染色体也称个体的基因型而基因型经过解码后所对应的决策向量X即可行解就是个体的表现型如果是浮点数编码每个设计变量用其取值范围内的一个浮点数表示构成染色体的一个基因vi因此个体的编码长度m也就等于决策变量的个数n由于这种编码方式使用的是决策变量的真实值所以也称真值编码方法无论哪种编码方式所有可能的染色体个体V构成问题的搜索空间种群遗传算法对最优解的搜索就是在搜索空间中搜索适应度最高的染色体后面叙述适应度的计算因此通过编码将一个问题的可行解从其解空间转换到了遗传算法能够处理的搜索空间经过个体的编码后就可以进行遗传算法的基本操作选择交叉和变异②选择复制操作选择也就是复制是在群体中选择适应度高的个体产生新群体的过程生物的进化是以集团为主体的与此相应遗传算法的运算对象是有M个个体或染色体组成的集合称为种群M也称为种群规模遗传算法在模拟自然选择时以个体的适应度Fitness高低为选择依据即适应度高的个体被遗传到下一代种群的概率较高而适应度低的个体遗传到下一代的概率则相对较低个体适应度由适应度函数计算适应度函数总是和个体表现型 ie X 的目标函数值f X 关联一般是由目标函数经过一定的变换得到一种最简单的方法就是直接使用目标函数f X 作为适应度函数4选定了适应度函数之后个体适应度也随之确定则在选择操作时个体被选中的概率5其中Fi为个体的适应度这种选择方式称为比例选择也称轮盘赌选择除此之外还有多种选择方法如随机竞争选择均匀选择无回放随机选择等不一一介绍③交叉操作所谓交叉就是以一定的概率交叉概率从群体中选择两个个体染色体按照某种方式交换其部分基因从而形成两个新的个体在遗传算法中它是产生新个体同时也是获得新的优良个体的主要方法它决定了遗传算法的全局搜索能力对于不同的编码方式交叉操作的具体方法也不相同对于浮点数编码一般使用算术交叉对于二进制编码有单点交叉和多点交叉等方式不论何种方式在交叉操作时首先应定义交叉概率Pc这个概率表明种群中参与交叉的个体数目的期望值是M 是种群规模通常交叉概率应取较大的值以便产生较多的新个体增加全局搜索力度但是Pc过大时优良个体被破坏的可能性也越大如果Pc 太小则搜索进程变慢影响算法的运行效率一般建议的取值范围是04–099④变异操作遗传算法中的变异操作就是将染色体上某些基因座上的基因以一定的变异概率Pm用其他的等位基因替代从而形成新的个体对于浮点数编码变异操作就是将变异点处的基因用该基因取值范围内的一个随机数替换对于二进制编码则是将变异点处的基因由1变成00变成1变异操作也有多种方法如均匀变异非均匀变异高斯变异等变异操作的概率Pm要比交叉操作的概率Pc小得多变异只是产生新个体的辅助手段但它是遗传算法必不可少的一个环节因为变异操作决定了算法的局部搜索能力它弥补了交叉操作无法对搜索空间的细节进行局部搜索的不足因此交叉和变异操作相互配合共同完成对搜索空间的全局和局部搜索以上简要介绍了遗传算法的基本原理和操作归纳起来基本遗传算法一般可以表示为一个8元组6式中C 个体的编码方法E 个体适应度评价函数P0 初始种群M 种群规模选择操作交叉操作变异操作是进化终止代数进化终止条件其中有4个运行参数需要预先设定M T PcPm 种群规模M一般取为20100 终止代数T一般取100500交叉概率Pc一般取04099 变异概率Pm一般取0000101最后给出遗传算法的基本步骤①选择二进制编码或浮点数编码把问题的解表示成染色体②随机产生一群染色体个体也就是初始种群③计算每一个个体的适应度值按适者生存的原则从中选择出适应度较大的染色体进行复制再通过交叉变异过程产生更适应环境的新一代染色体群即子代④重复第3步经过这样的一代一代地进化最后就会收敛到最适应环境适应度最大的一个染色体即个体上它就是问题的最优解图2给出了基本遗传算法设计流程图其中t代表当前代数T是进化终止代数图2 基本遗传算法设计流程图3 Matlab遗传算法工具箱 gatoolMatlab的遗传算法工具箱有一个精心设计的图形用户界面可以帮助用户直观方便快速地利用遗传算法求解最优化问题在Matlab命令窗口输入命令gatool可以打开遗传算法工具箱的图形用户界面如图3所示GA工具箱的参数设置步骤如下图3 遗传算法工具1 首先使用遗传算法工具箱必须输入下列信息Fitness function 适应度函数这里指的是待优化的函数也即目标函数该工具箱总是试图寻找目标函数的最小值输入适应度函数的格式为fitnessfun其中符号产生函数fitnessfun的句柄fitnessfun代表用户编写的计算适应度函数目标函数的M文件名该M文件的编写方法如下假定我们要计算Rastrigin函数的最小值7M函数文件确定这个函数必须接受一个长度为2的行向量X也即决策向量向量的长度等于变量数目行向量X的每个元素分别和变量x1和x2对应另外M文件要返回一个标量Z其值等于该函数的值下面是计算Rastrigin函数的M文件代码function Z Ras_fun XZ 20X 1 2X 2 2-10 cos 2piX 1 cos 2piX 2M文件编写保存后再在gatool工具箱界面Fitness function栏输入 Ras_funNumber of variable 变量个数目标函数中的变量数目也即适应度函数输入向量的长度在上例中它的值是22 其次设置遗传算法参数即Options设置以下只介绍部分运行参数的设置其他未提及的参数采用默认设置即可①种群参数 PopulationPopulation size 种群规模每一代中的个体数目一般是20-100之间种群规模大算法搜索更彻底可以增加算法搜索全局最优而非局部最优的概率但是耗时也更长Initial range 初始范围其值是两行的矩阵代表初始种群中个体的搜索范围实际上是决策向量X中每个变量xi的初始搜索范围矩阵的列数等于变量个数Number of variable第一行是每个变量的下限第二行是每个变量的上限如果只输入2 1的矩阵则每个变量的初始搜索范围都一样注意初始范围仅限定初始种群中个体或决策向量的范围后续各代中的个体可以不在初始范围之内初始范围不能设置太小否则造成个体之间的差异过小即种群的多样性降低不利于算法搜索到最优解②复制参数 ReproductionCrossover fraction 交叉概率一般取04099默认08③算法终止准则 Stopping Criteria提供了5种算法终止条件Generations最大的进化代数一般取100500默认是100当遗传算法运行到该参数指定的世代计算终止Time limit指明算法终止执行前的最大时间单位是秒缺省是Inf 无穷大Fitness limit 适应度限当最优适应度值小于或等于此参数值时计算终止缺省是-InfStall generation 停滞代数如果每一代的最佳适应度值在该参数指定的代数没有改善则终止计算缺省是50代Stall time 停滞时间如果每一代的最佳适应度值在该参数指定的时间间隔内没有改善则终止计算缺省是20秒3 设置绘图参数即Plots设置绘图参数Plots工作时可以从遗传算法得到图形数据当选择各种绘图参数并执行遗传算法时一个图形窗口在分离轴上显示这些图形下面介绍其中2个参数Best fitness 选择该绘图参数时将绘制每一代的最佳适应度值和进化世代数之间的关系图如图4的上图所示图中蓝色点代表每一代适应度函数的平均值黑色点代表每一代的最佳值Distance 选择此参数时绘制每一代中个体间的平均距离它反映个体之间的差异程度所以可用来衡量种群的多样性图4的下图显示的即是每一代个体间的平均距离图44 执行算法参数设置好了之后点击工具箱界面上的按钮Star 执行求解器在算法运行的同时Current generation当前代数文本框中显示当前的进化代数通过单击Pause按钮可以使计算暂停之后再点击Resume可以恢复计算当计算完成时Status and results窗格中出现如图5所示的情形图5其中包含下列信息算法终止时适应度函数的最终值即目标函数的最优值Fitness function value 0003909079476983379算法终止原因Optimization terminated imum number of generations exceeded 超出最大进化世代数最终点即目标函数的最优解[x1 x2] [-0004 -000193]两个变量的例子三实验内容1 Rastrigin函数的最小值问题函数表达式如 7 式函数图像如下图6所示它有多个局部极小值但是只有一个全局最小值Rastrigin函数的全局最小值的精确解是0出现在[x1 x2] [0 0]处图6 Rastrigin函数图像使用遗传算法工具箱近似求解Rastrigin函数的最小值首先编写计算适应度函数的M文件然后设置运行参数绘图参数Plots勾选Best fitness和Distance两项其它参数可以使用默认值执行求解器Run solver计算Rastrigin函数的最优值观察种群多样性对优化结果的影响决定遗传算法的一个重要性能是种群的多样性个体之间的距离越大则多样性越高反之则多样性越低多样性过高或过低遗传算法都可能运行不好通过实验调整Population 种群的Initial range 初始范围参数可得到种群适当的多样性取Initial range参数值[1 11]观察Rastrigin函数最小值的计算结果取Initial range参数值[1 100]观察Rastrigin函数最小值的计算结果取Initial range参数值[1 2]观察Rastrigin函数最小值的计算结果2 微带电极欧姆损耗的优化微带电极的欧姆损耗公式可由 1 式表示令设计变量[WDt] [x1 x2 x3] X变量的约束条件如下8根据 1 式和 8 式使用遗产算法工具箱优化设计电极的结构参数W 宽度 D 间距 t 厚度使得电极的欧姆损耗最小 1 式中用到的常数提示对约束条件 8 式的处理可以在编写计算适应度函数的M文件中实现方法是在M文件中引入对每个输入变量值范围的判断语句如果任一变量范围超出 8 式的限制则给该个体的适应度施加一个惩罚使得该个体被遗传到下一代的概率减小甚至为0一般可用下式对个体适应度进行调整9其中F x 是原适应度F x 是调整后的适应度P x 是罚函数为简单计本问题中我们可以给个体的适应度 com件的返回值Z 加上一个很大的数即可如正无穷Inf四思考题1 在遗传算法当中个体的变异对结果有何影响如果没有变异结果又将如何试以Rastrigin函数最小值的计算为例说明取变异概率为0即交叉概率Crossover fraction 102 遗传算法工具箱针对的是最小化函数值问题如果要利用该工具箱计算函数的最大值该如何实现。
利用遗传算法求解TSP问题
利⽤遗传算法求解TSP问题⼀、摘要TSP问题是指给定平⾯上N个点及每点的坐标,求⼀条路径,遍历所有的点并回到起点,使这条路径长度最⼩。
TSP问题是⼀个组合优化问题。
该问题可以被证明具有NPC计算复杂性。
因此,任何能使该问题的求解得以简化的⽅法,都将受到⾼度的评价和关注。
遗传算法是⼈⼯智能⽅法的⼀种,⽤于求解各种传统⽅法不⽅便求解或耗时很长的问题。
下⾯给出遗传算法求解TSP问题的步骤。
在传统遗传算法求解TSP的基础上,提出了⼀种新的编码⽅式,并且讨论了⼀种优化⽅法的可⾏性。
本次实验的程序⾸先在matlab上验证了基本的算法,然⽽由于matlab运⾏较慢,故⼜移植到C++平台上,经过测试,实验结果良好。
⼆、算法实现遗传算法的实现主要包括编码、选择、交叉、编译、将个体放⼊新种群这么⼏个步骤,经过很多代的编译求解,以逼近最优解。
下⾯讨论每⼀个步骤的实现,其中编码⽅式是我在考虑了传统编码⽅式不利于计算的缺点下,重新设计的⼀种全新的编码⽅式。
编码在传统TSP问题中,编码可以直接采⽤⼆进制编码或⾃然编码的形式,⽐如直接把城市转化成(2,5,4,1,3,6)的形式,表⽰从2到5到4到1到3到6最后回到起点。
但是在求解TSP问题时,如果直接采⽤此种编码⽅式,会导致在交叉或变异时出现冲突的情况。
如(2,5,4,1,3,6)和(3,5,6,1,2,4)交换后变成了(2,5,6,1,2,6)和(3,5,4,1,3,4),显然路径出现了冲突的现象,传统的解决⽅式是通过逐步调整的⽅法来消除冲突,但是这种⽅法增加了编码的复杂度,不利于问题的求解,根据问题的特点,提出了采⽤⼀种插⼊序号的编码⽅式。
假设6个城市(1,2,3,4,5,6)现在有编码(1,1,2,2,1,3),让第n个编码表⽰n放在第⼏个空格处。
那么⽣成路径的规则是⾸先取1放在第⼀个(1),然后取2放在第⼀个空格处(2,1),然后取3放在第⼆个空格处(2,3,1),然后取4放在第⼆个空格处(2,4,3,1)然后取5放在第⼀个空格处(5,2,4,3,1)最后取6放在第3个空格处(5,2,6,4,3,1)。
遗传算法实验报告
遗传算法实验报告遗传算法实验报告引言:遗传算法是一种模拟生物进化过程的优化算法,通过模拟自然选择、遗传变异和交叉等操作,逐步优化问题的解。
本实验旨在探究遗传算法在解决优化问题中的应用,并通过实验验证其效果。
一、实验背景遗传算法最早由美国科学家约翰·霍兰德于20世纪60年代提出,其灵感来源于达尔文的进化论。
遗传算法通过基因编码、适应度评估、选择、交叉和变异等操作,模拟了进化过程中的遗传和变异,从而找到问题的最优解。
二、实验目的本实验旨在通过遗传算法解决一个经典的优化问题,验证其在解决实际问题中的有效性。
同时,对遗传算法的参数设置和操作过程进行调整和优化,以提高算法的性能。
三、实验步骤1. 问题定义:选择一个经典的优化问题,例如旅行商问题(TSP)或背包问题。
2. 解空间建模:将问题的解表示为染色体,设计基因编码方式。
3. 适应度函数定义:根据问题的特点,设计一个能够评估染色体解的适应度函数。
4. 初始化种群:随机生成一组初始染色体,作为种群。
5. 选择操作:根据适应度函数,选择一部分较优秀的染色体作为父代。
6. 交叉操作:通过交叉操作,生成新的子代染色体。
7. 变异操作:对子代染色体进行变异操作,引入新的基因变异。
8. 适应度评估:计算新的子代染色体的适应度。
9. 父代替换:根据适应度函数,选择一部分较优秀的子代染色体替换掉父代染色体。
10. 终止条件判断:判断是否满足终止条件,若满足则结束算法,否则返回步骤5。
11. 输出结果:输出最优解及其适应度值。
四、实验结果与分析通过实验,我们得到了一组优化问题的最优解,并计算出其适应度值。
通过观察实验结果,我们可以发现遗传算法在解决优化问题中的有效性。
同时,我们还可以通过调整遗传算法的参数和操作过程,进一步提高算法的性能。
五、实验总结通过本次实验,我们深入了解了遗传算法的原理和应用。
遗传算法作为一种优化算法,具有较强的适应性和鲁棒性,在解决实际问题中具有广泛的应用前景。
遗传算法实验指导书
实验二:遗传算法一、实验目的1.学会使用遗传算法matlab示例程序辅助学习2.理解遗传算法的原理及机制二、实验原理遗传算法(Genetic Algorithm)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Hilland教授所提出的GA通常为简单遗传算法(SGA)。
遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。
每个个体实际上是染色体(chromosome)带有特征的实体。
染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。
因此,在一开始需要实现从表现型到基因型的映射即编码工作。
由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小挑选(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。
这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。
三、实验条件1.Matlab 7.0以上版本遗传算法演示程序2.IE6.0,能通过INTERNET查阅相关资料四、实验内容1.启动GA示例程序1)启动Matlab 7.02)单击help菜单,在弹出的下拉菜单中选择“demos”3)在“demos”窗口左边的树形选择栏选择“toolbox”中“Genetic Algorithm and Direct Search Demos”分支,“demos”窗口右边即为遗传算法示例程序列表。
《遗传算法》实验指导书
JC(b,as,c,N,p);
cout<<"交叉结果如下:"<<endl;
for(i=0;i<N;i++)
{
for(j=7;j>=0;j--)
cout<<b[i][j];
cout<<endl;
}
return 0;
}
实 验 六
辽宁鞍山科技大学理学院(系) 2010年 月 日
scanf("%d",&m);
sje(n,m);
printf("\n");
printf("请输入转换的二进制数长度:\n");
scanf("%d",&x);
printf("请输入转换的二进制数:\n");
for(i=x-1;i>=0;i--)
scanf("%d",&a[i]);
ejs(a,x);
}
实 验 三
{
b[i][j]=a[j];
a[j]=0;
}
}
cout<<endl<<"初始种群如下:"<<endl;
for(i=0;i<N;i++)
{
for(j=7;j>=0;j--)
cout<<b[i][j];
cout<<endl;
}
cout<<endl;
int *as=new int[N];
f(N,as);
人工智能化遗传算法实验报告
人工智能实验报告学号:姓名:实验名称:遗传算法实验日期:2016.1.5【实验名称】遗传算法【实验目的】掌握遗传算法的基本原理,熟悉遗传算法的运行机制,学会用遗传算法来求解问题。
【实验原理】遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。
每个个体实际上是染色体带有特征的实体。
在一开始需要实现从表现型到基因型的映射即编码工作。
由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。
这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。
遗传算法程度流程图为:【实验内容】题目:已知f(x)=x*sin(x)+1,x∈[0,2π],求f(x)的最大值和最小值。
数据结构:struct poptype{double gene[length];//染色体double realnumber;//对应的实数xdouble fitness;//适应度double rfitness;//相对适应度double cfitness;//累计适应度};struct poptype population[popsize+1];//最后一位存放max/min struct poptype newpopulation[popsize+1];//染色体编码:[0,2]x π∈,变量长度为2 π,取小数点后6位,由于2262322*102;π<<因此,染色体由23位字节的二进制矢量表示,则X 与二进制串(<b 22 b 21…… b 0>)2之间的映射如下:()2222212010bb ......b 2'i i i b x =⎛⎫=∙= ⎪⎝⎭∑;232'21x x π=- 适应度函数:由于要求f(x)的最值,所以适应度函数即可为f(x)。
苏州大学《人工智能》实验指导书
《人工智能》实验指导书专业年级姓名学号指导老师实验室使用日期苏州大学计算机科学与技术学院统一印制二零零二年八月实验一启发式搜索一、实验目的:熟悉和掌握启发式搜索的定义、估价函数和算法过程,并利用A 算法求解九宫问题,理解求解流程和搜索顺序。
二、实验方法:1.先熟悉启发式搜索算法;2.用C、C++或JA V A 语言编程实现实验内容。
三、实验背景知识:1.估价函数在对问题的状态空间进行搜索时,为提高搜索效率需要和被解问题的解有关的大量控制性知识作为搜索的辅助性策略。
这些控制信息反映在估价函数中。
估价函数的任务就是估计待搜索节点的重要程度,给这些节点排定次序。
估价函数可以是任意一种函数,如有的定义它是节点x处于最佳路径的概率上,或是x节点和目标节点之间的距离等等。
在此,我们把估价函数f(n)定义为从初始节点经过n节点到达目标节点的最小代价路径的代价估计值,它的一般形式是:f(n) = g(n) + h(n)其中g(n)是从初始节点到节点n的实际代价,g(n)可以根据生成的搜索树实际计算出来;h(n)是从n到目标节点的最佳路径的代价估计,h(n)主要体现了搜索的启发信息。
2. 启发式搜索过程的特性(1)可采纳性当一个搜索算法在最短路径存在的时候能保证能找到它,我们就称该算法是可采纳的。
所有A*算法都是可采纳的。
(2)单调性一个启发函数h是单调的,如果a)对所有的状态n i和n j,其中n j是n i的子孙,h(n i )- h(n j )≤cost(n i,n j ),其中cost(n i,n j )是从n i到n j 实际代价。
b)目标状态的启发函数值为0,即h(Goal)=0.具有单调性的启发式搜索算法在对状态进行扩展时能保证所有被扩展的状态的f值是单调递增(不减)。
(3)信息性比较两个启发策略h1和h2,如果对搜索空间中的任何一个状态n 都有h1(n) ≤h2(n),就说h2比h1具有更多的信息性。
运筹学实验总结
运筹学实验总结引言:运筹学是一门综合了数学、经济学和工程学等多学科知识的学科,它通过建立数学模型和运用各种优化方法,帮助我们在现实问题中寻找最优解决方案。
在这学期的运筹学课程中,我们进行了一系列实验。
这些实验不仅加深了对运筹学理论的理解,还提供了一种应用运筹学方法解决问题的实践平台。
在本文中,我将总结我参与的运筹学实验,并分享我的体会和收获。
实验一:线性规划问题求解在这个实验中,我们学习了线性规划的基本概念和求解方法。
我选择了一个典型的生产调度问题作为实验题目。
通过建立数学模型,并运用线性规划软件,我成功地解决了这个问题。
通过这个实验,我深刻理解了线性规划问题的本质,以及如何利用线性规划方法找到最优解。
实验二:整数规划问题求解整数规划是线性规划的扩展,它在决策问题中更加实用。
在这个实验中,我选择了货物配送路线问题作为研究对象。
通过构建整数规划模型,并运用求解软件,我得到了最佳的货物配送方案。
这个实验不仅对我的数学建模能力提出了要求,还培养了我的实际问题解决能力。
实验三:动态规划动态规划是一种重要的优化方法,它广泛应用于最优化问题的求解。
在这个实验中,我们学习了动态规划的基本原理和设计思想。
我选择了旅行商问题作为研究对象,通过建立递推关系和寻找最优子结构,我成功地解决了该问题。
这个实验让我意识到了动态规划方法的强大威力,同时也对我的算法设计能力提出了更高的要求。
实验四:模拟退火算法模拟退火算法是一种全局搜索优化算法,具有很强的应用能力。
在这个实验中,我选择了旅行商问题作为研究对象,通过模拟退火算法的迭代和优化,我得到了一个较好的解。
通过这个实验,我掌握了模拟退火算法的基本原理和实现过程,也了解到了算法的优越性。
实验五:遗传算法遗传算法是一种模拟自然选择和遗传机制的优化算法。
在这个实验中,我选择了装箱问题作为研究对象。
通过运用遗传算法的交叉、变异和适应度选择,我得到了一个较好的装箱方案。
这个实验不仅对我的算法设计能力提出了更高的要求,还让我意识到了遗传算法的创新性和解决复杂问题的能力。
关于遗传算法的实验报告
关于遗传算法得实验报告一、实验目得:ﻩ理解与掌握遗传算法得应用及意义,能用一门自己擅长得语言实现遗传算法得基本功能,在此基础上进一步理解与巩固对遗传算法得重要,以便在今后得学习与工作中能有效得运用与借鉴!需要指出得就是遗传算法并不就是能保证所得到得就就是最佳得答案但通过一定得方法可以将误差控制在一定得范围内!二、实验原理与题目:1、遗传算法就是一种基于空间搜索得算法,它通过自然选择、遗传、变异等操作以及达尔文得适者生存得理论,模拟自然进化过程来寻找所求问题得答案。
其求解过程就是个最优化得过程。
一般遗传算法得主要步骤如下:(1)随机产生一个确定长度得特征字符串组成得初始种群。
(2)对该字符串种群迭代地执行下面得步骤a与步骤b,直到满足停止准则为止:a计算种群中每个个体字符串得适应值;b应用复制、交叉与变异等遗传算子产生下一代种群。
(3)把在后代中表现得最好得个体字符串指定为遗传算法得执行结果,即为问题得一个解。
2、通过编码、设置种群、设置适应度函数、遗传操作、解码产生需要得解。
f(x)=x*sin(x)+1,x∈[0,2π],求解f(x)得最大值与最小值。
三、实验条件硬件:微型计算机。
ﻩ语言:本实验选用得为C++语言。
四、实验内容:建造针对f(x)得遗传算法程序,然后进行运行求解。
五、实验步骤:ﻩ1、确定基本功能:本实验就是实现f(x)得最大值与最小值得求解。
2、对f(x)进行编码:用一个二进制矢量表示一个染色体,由染色体来代表变量x得实数值,这里精度取小数点后6位数,变量x得域长为2π,整个区间被分为2π*1000000个等长得区间。
由于2π*1000000在23位二进制数得表示范围呢,所以,编码长度为23位。
3、设计适应度函数:由于要求f(x)得最值,所以适应度函数可根据f(x)做适当得改变。
最大值:f(x)=x*sin(x)+5;最小值:f(x)=1/(x*sin(x)+5);4、针对f(x)得设计并且实现遗传算法程序:遗传操作主要包括复制、交叉与变异。
《人工智能及其应用》实验指导书
《人工智能及其应用》实验指导书浙江工业大学计算机科学与技术学院—人工智能课程组2011年9月前言本实验是为了配合《人工智能及其应用》课程的理论学习而专门设置的。
本实验的目的是巩固和加强人工智能的基本原理和方法,并为今后进一步学习更高级课程和信息智能化技术的研究与系统开发奠定良好的基础。
全书共分为八个实验:1.产生式系统实验;2.模糊推理系统实验;3.A*算法求解8数码问题实验;4.A*算法求解迷宫问题实验;5.遗传算法求解函数最值问题实验;6.遗传算法求解TSP问题实验;7.基于神经网络的模式识别实验;8.基于神经网络的优化计算实验。
每个实验包括有:实验目的、实验内容、实验条件、实验要求、实验步骤和实验报告等六个项目。
本实验指导书包括两个部分。
第一个部分是介绍实验的教学大纲;第二部分是介绍八个实验的内容。
由于编者水平有限,本实验指导书的错误和不足在所难免,欢迎批评指正。
人工智能课程组2011年9月目录实验教学大纲 (1)实验一产生式系统实验 (3)实验二模糊推理系统实验 (5)实验三A*算法实验I (9)实验四A*算法实验II (12)实验五遗传算法实验I (14)实验六遗传算法实验II (18)实验七基于神经网络的模式识别实验 (20)实验八基于神经网络的优化计算实验 (24)实验教学大纲一、学时:16学时,一般安排在第9周至第16周。
二、主要仪器设备及运行环境:PC机、Visual C++ 6.0、Matlab 7.0。
三、实验项目及教学安排序号实验名称实验平台实验内容学时类型教学要求1 产生式系统应用VC++ 设计知识库,实现系统识别或分类等。
2 设计课内2 模糊推理系统应用Matlab 1)设计洗衣机的模糊控制器;2)设计两车追赶的模糊控制器。
2 验证课内3 A*算法应用I VC++ 设计与实现求解N数码问题的A*算法。
2 综合课内4 A*算法应用II VC++ 设计与实现求解迷宫问题的A*算法。
遗传算法实验报告
遗传算法实验报告一、实验目的遗传算法是一种基于自然选择和遗传机制的优化算法,本次实验的主要目的是深入理解遗传算法的原理和工作机制,并通过实际编程实现来解决特定的优化问题,观察其性能和效果。
二、实验原理遗传算法模拟了生物进化的过程,通过对一组潜在的解决方案(称为个体或染色体)进行选择、交叉和变异操作,逐步迭代优化,以找到最优或近似最优的解。
在遗传算法中,每个个体都由一组基因表示,这些基因对应于问题的参数。
适应度函数用于评估每个个体的优劣程度,适应度高的个体更有可能被选择进行繁殖,产生下一代个体。
选择操作通常基于个体的适应度比例,适应度高的个体有更高的概率被选中。
交叉操作将两个父代个体的基因部分组合,生成新的子代个体。
变异操作则以一定的概率随机改变个体的某些基因,以增加种群的多样性。
三、实验环境本次实验使用 Python 编程语言,主要依赖的库有 numpy 用于数组操作,matplotlib 用于结果可视化。
四、实验步骤1、问题定义确定要优化的问题,例如求解函数的最大值或最小值,或者在给定约束条件下寻找最优的参数组合。
定义适应度函数,用于衡量每个个体的优劣。
2、编码方案确定如何将问题的解编码为染色体的形式。
常见的编码方式有二进制编码、实数编码等。
3、初始化种群随机生成一定数量的初始个体,组成初始种群。
4、选择操作根据个体的适应度计算选择概率,使用轮盘赌选择或其他选择方法选择父代个体。
5、交叉操作对选中的父代个体进行交叉,生成子代个体。
6、变异操作以一定的概率对个体的基因进行变异。
7、迭代更新重复进行选择、交叉和变异操作,生成新的种群,直到满足终止条件(如达到最大迭代次数或找到满意的解)。
8、结果分析对最终得到的最优个体进行解码,得到问题的解。
分析遗传算法的性能,如收敛速度、解的质量等。
五、实验结果与分析以求解函数 f(x) = x^2 在区间 0, 10 上的最大值为例,进行了遗传算法的实验。
1、适应度函数定义适应度函数直接采用目标函数 f(x) = x^2 ,即适应度越高,函数值越大。
人工智能实验指导书+作业展示
《人工智能技术导论》实验指导书西北工业大学计算机学院目录一实验纲要 (1)二上机要求 (2)三实验内容 (3)实验一图搜索与问题求解 (3)实验1.1 启发式搜索 (3)实验1.2 A*算法搜索 (9)实验1.3 其他应用问题 (12)实验二产生式系统推理 (14)实验三TSP问题的遗传算法实现 (20)四实验报告模板 (27)人工智能实验一实验报告 (27)人工智能实验二实验报告 (28)人工智能实验三实验报告 (29)附件1 TSP问题的遗传算法程序模板 (30)附件2 学生作业作品展示 (35)一实验纲要一实验教学的目的、任务与要求将人工智能基础理论应用于实际问题的解决当中,加深学生对所学知识的理解,提高学生的实际动手能力。
二实验项目内容1图搜索策略实验用启发式搜索方法/A*算法求解重排九宫问题/八数码问题。
2产生式系统的推理以动物识别系统为例,实现基于产生式规则的推理系统。
3 TSP问题的遗传算法实现以N个结点的TSP问题为例,用遗传算法加以求解。
三参考教材人工智能技术导论-第3版,廉师友编著,西安电子科技大学出版社,2007。
四使用主要仪器设备说明在Windows2000/XP上,选用Java/C/C++/Matlab等语言进行实现。
五实验考核实验为12学时,分4次课完成。
每个实验题目在课堂上分别按百分制给出。
其中包括课堂纪律、程序运行结果、课堂回答问题及实验报告成绩等。
实验课总成绩为3个实验题目的平均成绩。
实验课要求学生提前预习,上课时需向辅导老师提交预习报告,报告格式和内容不作过多要求,只需简要说明自己本次实验的大体思想。
预习报告形式不限,电子版或手写版均可。
1 考核方法由各班辅导老师当堂检查源程序和运行结果,并提问相关问题,课堂上给出成绩并记录。
每个题目完成后把源代码和实验报告提交,由辅导老师检查实验报告并给出报告成绩。
2 评分标准每个实验题目根据以下标准进行考核:1)考勤分20分。
遗传算法解决排产问题的启发式搜索方法与实践指南
遗传算法解决排产问题的启发式搜索方法与实践指南在现代制造业中,排产问题是一个常见而又具有挑战性的任务。
如何合理安排生产资源、优化生产效率是每个制造企业都面临的难题。
而遗传算法作为一种启发式搜索方法,被广泛应用于解决排产问题。
本文将介绍遗传算法的基本原理和应用方法,并提供一些实践指南,帮助读者更好地应用遗传算法解决排产问题。
一、遗传算法的基本原理遗传算法是一种模拟生物进化过程的优化算法。
它基于达尔文的进化论,通过模拟自然选择、交叉、变异等过程,寻找问题的最优解。
遗传算法的基本原理包括以下几个关键步骤:1. 初始化种群:首先需要随机生成一组个体,称为种群。
每个个体都代表了问题的一个可能解。
2. 评估适应度:对于每个个体,需要计算其适应度,即解决问题的能力。
适应度越高,个体越有可能成为下一代的父代。
3. 选择操作:根据个体的适应度,选择一些个体作为父代,用于产生下一代。
适应度越高的个体被选择的概率越大。
4. 交叉操作:从父代中选择两个个体,通过交叉操作生成两个子代。
交叉操作模拟了生物界的基因组合过程。
5. 变异操作:对于生成的子代,以一定的概率进行变异操作。
变异操作模拟了生物界的基因突变现象。
6. 更新种群:用生成的子代替换原来的父代,形成新的种群。
7. 终止条件:根据设定的终止条件(如达到最大迭代次数或找到满足要求的解),判断是否终止算法。
二、遗传算法在排产问题中的应用排产问题是一个典型的组合优化问题,即如何在有限的资源条件下,合理安排生产任务,以达到最大的生产效率。
遗传算法作为一种全局优化方法,可以通过搜索解空间,找到最优的排产方案。
在应用遗传算法解决排产问题时,首先需要将问题转化为遗传算法所能处理的形式。
例如,可以将生产任务表示为染色体,每个基因表示一个生产任务的顺序。
然后,根据问题的具体要求,设计适应度函数,用于评估每个个体的适应度。
接下来,根据遗传算法的基本原理,设置合适的参数,如种群大小、交叉概率、变异概率等。
正交实验 遗传算法
正交实验遗传算法正交实验是一种用于设计和优化复杂系统的实验方法,而遗传算法是一种基于生物进化原理的优化算法。
本文将介绍如何将正交实验与遗传算法相结合,以提高实验效果和优化结果。
我们来了解一下正交实验。
正交实验是一种通过设计独立变量的组合来探究因素对系统性能的影响的方法。
正交实验的核心思想是通过选择一组正交的试验条件,以尽量减少实验次数的同时保证实验结果的可靠性和可解释性。
正交实验的设计原则包括选择适当的因素水平、确定正交表和选择试验次数等。
而遗传算法是一种模拟生物进化过程的优化算法。
它通过模拟自然界的遗传、交叉和变异等过程,不断迭代地优化目标函数,以找到最优解。
遗传算法的基本流程包括初始化种群、评估适应度、选择操作、交叉和变异等步骤。
通过不断迭代优化,遗传算法能够在复杂的搜索空间中找到最优解。
将正交实验与遗传算法相结合,可以充分利用正交实验的设计原则和遗传算法的优化能力,有效地提高实验效果和优化结果。
具体而言,可以通过以下步骤来实现正交实验遗传算法:第一步是正交实验的设计。
根据实验目标和因素的种类与水平,选择合适的正交表,确定试验因素的水平。
正交表的选择应满足变量之间的正交性,以减少实验次数。
通过正交实验的设计,我们可以得到一组试验方案。
第二步是初始化种群。
将试验方案转化为遗传算法的染色体编码形式,并根据问题的具体情况,设置染色体的长度和编码方式。
根据正交实验的设计结果,生成初始种群,种群中的每个个体代表一个试验方案。
第三步是评估适应度。
根据问题的具体要求,设计适应度函数来评估每个个体的适应度。
适应度函数应能够准确地反映个体的性能指标,以便进行选择操作。
第四步是选择操作。
根据个体的适应度,利用选择算子选择优秀个体。
选择算子可以根据适应度大小进行比例选择、竞争选择等。
选择操作的目的是保留优秀个体,并为其提供繁殖的机会。
第五步是交叉操作。
通过交叉算子对选择的个体进行交叉,产生新的个体。
交叉操作的目的是模拟生物界的交配过程,增加种群的多样性,避免陷入局部最优解。
遗传算法求解TSP问题实验报告
人工智能实验报告实验六遗传算法实验II一、实验目的:熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响。
二、实验原理:旅行商问题,即TSP问题(Traveling Salesman Problem)是数学领域中著名问题之一。
假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。
路径的选择目标是要求得的路径路程为所有路径之中的最小值。
TSP问题是一个组合优化问题。
该问题可以被证明具有NPC计算复杂性。
因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。
遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程。
它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体。
这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。
后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。
群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。
要求利用遗传算法求解TSP问题的最短路径。
三、实验内容:1、参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。
2、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。
3、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。
4、上交源代码。
四、实验报告要求:1、画出遗传算法求解TSP问题的流程图。
2、分析遗传算法求解不同规模的TSP问题的算法性能。
规模越大,算法的性能越差,所用时间越长。
3、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。
智能控制实验报告
智能控制仿真实验实验一模糊控制系统的仿真实验实验二 BP神经网络的仿真实验实验三遗传算法仿真实验实验四智能控制实际工程处理(选做)实验一模糊控制系统的仿真实验实验目的:现有被控对象一:G(s)=1/(s2+2s+1)被控对象二:G(s)=K /【(T1s+1)(T2s+1) 】试设计一个模糊控制系统来实现对它的控制,并完成以下任务实验任务一:请根据以上的数据重新仿真一下,看Ke的变化对系统性能的影响是否如此?然后仍以G(s)=1/(s2+2s+1) 为被控对象,按照同样的方法仿真并分析Kc、Ku的变化对系统性能的影响。
1.相同参数不同控制器解模方法下的图形BISECTORMOMSOMLOM2.不同参数相同解模方法下的图形(解模方法均为BISECTOR)(1)Ke的影响(Kc=5,Ku=8)Ke=1(2)Kc的影响(Ke=9,Ku=8)Kc=1(3)Ku的影响(Ke=9,Kc=5)Ku=1小结:由以上图形分析可得,不同的解模方法输出的结果不同,经比较BISECTOR 的解模方法更加合适。
参数Kc、Ku不变时,随着Ke的减小,上升时间将增大;Ke、Ku不变时,随着Kc的减小超调变大;Ke、Kc不变时随着Ku的减小,输出越来越低于1。
可知Ke=9、Kc=5、Ku=8更为合适。
实验任务二:仍使用以上设计的模糊控制器,被控对象为: G(s)=K /【(T 1s+1)(T 2s+1)】 ,被控对象的参数有以下四组: 第一组参数: G(s)=20/【(1.2s+1)(4s+1)】 第二组参数: (s)=20/【(0.4s+1)(4s+1)】 第三组参数: G(s)=20/【(2s+1)(4s+1)】 第四组参数: G(s)=20/【(2s+1)(8s+1)】请根据由任务一得到的Ke 、Kc 、Ku 的变化对系统性能影响的规律,选择第一组参数作为被控对象参数,调试出适合该系统的最佳的Ke 、Kc 、Ku 和反模糊化方法;并在你调出的最佳的Ke 、Kc 、Ku 状态下,将对象参数分别变成第二、三、四组的参数,仿真出结果,并分析fuzzy controller 的适应能力。
实验五:遗传算法求解函数最值问题实验
实验五:遗传算法求解函数最值问题实验一、实验目的使用遗传算法求解函数在及y的最大值。
二、实验内容使用遗传算法进行求解,篇末所附源代码中带有算法的详细注释。
算法中涉及不同的参数,参数的取值需要根据实际情况进行设定,下面运行时将给出不同参数的结果对比。
定义整体算法的结束条件为,当种群进化次数达到maxGeneration时停止,此时种群中的最优解即作为算法的最终输出。
设种群规模为N,首先是随机产生N个个体,实验中定义了类型Chromosome表示一个个体,并且在默认构造函数中即进行了随机的操作。
然后程序进行若干次的迭代,在每次迭代过程中,进行选择、交叉及变异三个操作。
1.选择操作首先计算当前每个个体的适应度函数值,这里的适应度函数即为所要求的优化函数,然后归一化求得每个个体选中的概率,然后用轮盘赌的方法以允许重复的方式选择选择N个个体,即为选择之后的群体。
但实验时发现结果不好,经过仔细研究之后发现,这里在x、y 取某些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响。
对于这个问题,我把适应度函数定为目标函数的函数值加一个正数,保证得到的适应值为正数,然后再进行一般的归一化和选择的操作。
实验结果表明,之前的实验结果很不稳定,修正后的结果比较稳定,趋于最大值。
2.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。
这里根据交叉参数crossnum进行多点交叉,首先随机生成交叉点位置,允许交叉点重合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。
3.变异操作首先是根据变异概率probMutation选择要变异的个体。
变异时先随机生成变异的位置,然后把改位的01值翻转。
2023年基于遗传算法求解TSP问题实验报告
基于遗传算法求解TSP问题班级, 学号, 姓名摘要: 巡回旅行商问题(TSP)是一种组合优化方面旳问题, 从理论上讲, 使用穷举法不仅可以求解TSP问题, 并且还可以得到最优解。
不过, 运用穷举法所花费旳时间巨大旳, 当问题旳规模很大时, 穷举法旳执行效率较低, 不能满足及时旳需要。
遗传算法是计算机科学人工智能领域中用于处理最优化旳一种搜索启发式算法, 是进化算法旳一种。
该算法通过模拟生物学交叉、变异等方式, 是目前向最优解旳方向进化, 因此使用于TSP问题旳求解。
关键词: 人工智能;TSP问题;遗传算法本组组员: 林志青, 韩会雯, 赵昊罡本人分工:掌握遗传算法旳基本原理, 编写遗传算法中部分匹配交叉、循环交叉和循序交叉旳详细实现过程。
1 引言旅行商问题, 即TSP问题, 是一种最优解旳求解问题。
假设有n个都市, 并且每个都市之间旳距离已知, 则怎样只走一遍并获得最短途径为该问题旳详细解释。
对于TSP问题旳处理, 有穷举法、分支限界法等求解方式, 该文章重要简介遗传算法求解过程。
遗传算法简称GA, 在本质上是一种求解问题旳高效并行全局搜索措施。
遗传算法从任意一种初始化旳群体出发, 通过随机选择、交叉和变异等遗传操作, 使群体一代一代旳进化到搜索空间中越来越好旳区域, 直至抵达最优解。
在遗传算法中, 交叉操作为重要操作之一, 包括部分匹配交叉、循环交叉和次序交叉等。
2 算法原理与系统设计执行遗传算法, 根据需要设定对应旳交叉因子、变异因子和迭代次数, 并选择对应旳交叉算法,当程序图形显示并运算时会得到目前旳最优解, 判断与否获得最终旳最优解, 若已得到所需成果, 则停止运行, 否则继续执行。
详细流程图如下所示:部分匹配交叉(PMX): 先随机生成两个交叉点, 定义这两点间旳区域为匹配区域, 并互换两个父代旳匹配区域。
如下图所示:父代A: 872 | 130 | 9546父代B: 983 | 567 | 1420互换后变为:temp A: 872 | 567 | 9546temp B: 983 | 130 | 1420对于 temp A.tempB中匹配区域以外出现旳数码反复, 要根据匹配区域内旳位置逐一进行替代。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三、基本遗传算法设计实验
一、实验目的
1、了解基本遗传算法全局优化一般思路
2、掌握选择、交叉、变异算子如何实现
3、轮盘赌方法(roulette wheel model) 如何用程序方法实现
4、适应度函数设计方法
二、实验内容
1、初始化处理。
2、神经网络的MA TLAB实现
三、实验步骤
1、熟悉MATLAB开发环境
2、输入参考程序
3、设置断点,运行程序,观察运行结果
四、参考程序
1、初始化
function result=Initial(length)
for i=1:length
r=rand();
result(i)=round(r);
end
2、Matlab 实现----十进制与二进制转换
⏹function y=Dec(a,b,x,L)
⏹base=2.^((L-1):-1:0);
⏹y=dot(base,x);
⏹y=a+y*(b-a)/(2^L-1);
3、Matlab 实现---适应度函数计算
⏹function F=fitness(x)
⏹F=20+x+10*sin(4*x)+8*cos(3*x);
4、Matlab 实现----GA()
function [xv, fv]=GA(fitness,a,b,NP,NG,pc,pm)
L=24; %L=ceil(log((b-a)/eps+1))L=24
x=zeros(NP,L);
for i=1:NP;
x(i,:)=Initial(L);
fx(i)=fitness(Dec(a,b,x(i,:),L));
end
for k=1:NG
sumfx=sum(fx);
px=fx/sumfx;
ppx=0;
ppx(1)=px(1);
for i=2:NP
ppx(i)=ppx(i-1)+px(i);
end
for i=1:NP
sita=rand();
for n=1:NP
if sita<=ppx(n)
SelFather=n;
break;
end
end
SelMother=floor(rand()*(NP-1))+1;
posCut=floor(rand()*(L-2))+1;
r1=rand();
if r1<=pc
nx(i,1:posCut)=x(SelFather,1:posCut);
nx(i,(posCut+1):L)=x(SelMother,(posCut+1):L); r2=rand();
if r2<=pm
posMut=round(rand()*(L-1)+1);
nx(i,posMut)=~nx(i,posMut);
end
else
nx(i,:)=x(SelFather,:);
end
end
x=nx;
for i=1:NP
fx(i)=fitness(Dec(a,b,x(i,:),L));
end
end
fv=-inf;
for i=1:NP
fitx=fitness(Dec(a,b,x(i,:),L));
if fitx>fv
fv=fitx;
xv=Dec(a,b,x(i,:),L);
end
end
⏹
5、Matlab 实现----主程序
⏹a=0;
⏹b=10;
⏹NP=50;
⏹NG=10000;
⏹pc=0.6;
⏹pm=0.04;
⏹
⏹[xv, fv]=GA(@fitness,a,b,NP,NG,pc,pm);
⏹disp “最优个体"
⏹xv
⏹disp “最优适应度"
⏹
⏹Fv
6、实验结果
五、思考题
1、如何求最小值并考虑怎样修改程序:f (x )=x 2-10x+16z[0,31]的最小值(其中x 取整数)?
2、如何求最小值并考虑怎样修改程序:f (x )=x 2-10x+16[0,10]的最小值(其中要求x 精确
到小数点后六位)?。