人工智能的主要内容与及方法

上传人:jin****ng 文档编号:193347965 上传时间:2023-03-09 格式:DOCX 页数:38 大小:441.64KB
返回 下载 相关 举报
人工智能的主要内容与及方法_第1页
第1页 / 共38页
人工智能的主要内容与及方法_第2页
第2页 / 共38页
人工智能的主要内容与及方法_第3页
第3页 / 共38页
点击查看更多>>
资源描述
人工智能的主要内容和方法人工智能(Artificial Intelligence,简称Al )是50年代兴起的一门新兴边缘学科,二十世纪七十年代以来被称为世界三大尖端技术之一 (空间技术、能源技术、人工智能) ,也被认为是二十一 世纪三大尖端技术之一(基因工程、纳米科学、人工智能)。广义的讲,人工智能是关于人造物的智能行为,而智能行为包括知觉、推理、学习、交流和在复杂环境中的行为。人工智能的一个长期目标是发明出可以像人类一样或能更好地完成以上行为的机器;另一个目标是理解这种智能行为是否存在于机器、人类或其他动物中。目前能够用来研究人工智能的主要物质手段以及能够实现人工智能技术的机器就是计算机 , 人工智能的发展历史是和计算机科学与技术的发展史联系在一起的。除了计算机科学以外 , 人工智能还涉及信息论、控制论、自动化、仿生学、生物学、心理学、数理逻辑、语言学、 医学和哲学等多门学科。一、 AI 的主要内容人工智能研究的主要内容包括:知识表示、自动推理和搜索方法、机器学习和知识获取、 知识处理系统、 自然语言理解、 计算机视觉、智能机器人、自动程序设计等方面。知识表示是人工智能的基本问题之一, 推理和搜索都与表示方法密切相关。常用的知识表示方法有:逻辑表示法、产生式表示法、语义网络表示法和框架表示法等。常识,自然为人们所关注,已提出多种方法,如非单调推理、定性推理就是从不同角度来表达常识和处理常识的。问题求解中的自动推理是知识的使用过程,由于有多种知识表示方法,相应地有多种推理方 法。推理过程一般可分为演绎推理和非演绎推理。谓词逻辑是演绎推理的基础。结构化表示下的继 承性能推理是非演绎性的。由于知识处理的需要,近几年来提出了多种非演绎的推理方法, 如连接机制推理、类比推理、基于示例的推 理、反绎推理和受限推理等。搜索是人工智能的一种问题求解方法, 搜索策略决定着问题求解的一个推理步骤中知识被使用 的优先关系。 可分为无信息导引的盲目搜索和利用经验知识导引的启发式搜索。启发式知识常由启发 式函数来表示,启发式知识利用得越充分,求解问题的搜索空间就越小。典型的启发式搜索方法有 A* 、 AO* 算法等。近几年搜索方 法研究开始注意那些具有百万节点的超大规模的搜索问题。机器学习是人工智能的另一重要课题。 机器学习是指在一定的知识表示 意义下获取新知识的过程,按照学习机制的不同,主要有归纳学习、分析学 习、连接机制学习和遗传学习等。知识处理系统主要由知识库和推理机组成。 知识库存储系统所需要的知 识,当知识量较大而又有多种表示方法时, 知识的合理组织与管理是重要的。 推理机在问题求解时,规定使用知识的基本方法和策略,推理过程中为记录 结果或通信需设数据库或采用黑板机制。 如果在知识库中存储的是某一领域 (如医疗诊断 )的专家知识,则这样的知识系统称为专家系统。为适应复杂问 题的求解需要,单一的专家系统向多主体的分布式人工智能系统发展,这时 知识共享、主体间的协作、矛盾的出现和处理将是研究的关键问题。二、 AI 的研究方法既为人工智能的最终研究目标打好基础,又能创造出短期效益,这是选择人工智能研究最佳方 法的标准。尽管人工智能已经创造了一些实用系统,但这些远未达到人类的智能水平。在过去的几 十年里涌现出了大量的方法,大致可分为两大类。第一类包括符号处理的方法。它们基于 Newell 和 Simon 的物理符号系统的假说。大多数被称为 “经典的人工智能” 均在其指导之下。 这类方法中,突出的方法是将逻辑操作应用于说明性知识库。 这种风格的人工智能运用说明语句来表达问题域的“知识” ,这些语句基于或实质上等同于一阶逻辑中 的语句,采用逻辑推理可推导这种知识的结果。这种方法有许多变形,包括那些强调对逻辑语言中定义域的形式公理化的角色的变形。当遇到“真正的问题”,这一方法需要掌握问题域的足够知识,通常就称作基于知识的方法。在大多数符号处理方法中, 对需求行为的分析和为完成这一行为所做的机器合成要经过几个阶段。 最高阶段是知识阶段, 机器所需知识在这里说明。接下来是符号阶段,知识在这里以符号组织表示(例 如:列表可用列表处理语言 LISP 来描述),同时在这里说明这些组织的操作。接着,在更低级的阶段 里实施符号处理。多数符号处理采用自上而下的设计方法,从知识阶段向下到符号和实施阶段。第二类包括所谓的“子符号”方法。它们通常采用自下而上的方式,从最低阶段向上进行。在最 低层阶段,符号的概念就不如信号这一概念确切了。在子符号方法中突出的方法是“ Animatapproach”。偏爱这种方式的人们指出,人的智能经过了在地球上十亿年或更长时间的进化过程, 认为为了制造出真正的智能机器,我们必须沿着这些进化的步骤走。因此,我们必须集3中研究复制信号处理的能力和简单动物如昆虫的支配系统, 沿着进化的阶梯 向上进行。这一方案不仅能在短期内创造实用的人造物,又能为更高级智能 的建立打好坚实的基础。第二类方法也强调符号基础。在物理基础假说中,一个 agent 不采用集中式的模式而运用其不同的行为模块与环境相互作用来进行复杂的行为。机器与环境的相互作用产生了所谓的“自然行为(emergent behavior)”。一个agent的功能可视作该系统与动态环境密切相互作用的自然属性。agent本身对其行为的说明并不能解释它运行时所表现的功能;相反,其功能很大程度 上取决于环境的特性。不仅要动态的考虑环境,而且环境的具体特征也要运 用于整个系统之中。由子符号派制造的著名样品机器包括“神经网络(Neural net work)”。根据模拟生物进化方面的进程,一些有意思的机器应运而生,包括:Sexualcrossover、Mutation 和 Fitness-proportional reproduction。其他自下而上,含 animat 风格的方法是基于控制理论和动态系统地分析。介于自上而下和自下而上之间的方法是一种“环境自动机(situated automata)”的方法。Kaelbling和Rosenschein建议编写一种程序设计语言来说明agent在高水平上所要求的行为,并编写一编译程 序,以从这种语言编写的程序中产生引发行为的线路。RBF网络)ylXnbX1b0ymh )X2RBF网络的工作原理径向基函数神经网络(Radial Basis Func tion Neural Net work, RBF)是一径向基函数神经网络MATLAB 仿真种前馈神经网络,一般为三层结构,如下图:i( x-Cici W W Rh*mm上图所示为 nhm 结构的 RBF 网络,即网络具有n 个输入, h 个隐节点,m个输出。其中x=(x XX)TERn为网络输入矢量,WERnX m为输i, 2, n出权矩阵,bb为输出单元偏移,y=(y yy)T为网络输出,(*)为第0, mi, 2, mii个隐节点的激活函数。图中输出层节点中的工表示输出层神经元采用线性激活函数(输出神经元也可以采用其他非线性激活函数, 如 Sigmoidal 函数)。RBF 网络的最显著的特点是隐节点的基函数采用距离函数(如欧式距离),并使用径向基函数(如Gaussian高斯函数)作为激活函数。径向基函数关于 n 维空间的一个中心点具有径向对称性,而且神经元的输入离该中心 点越远,神经元的激活程度就越低。 隐节点的这个特性常被称为 “局部特性”。因此 RBF 网络的每个隐节点都具有一个数据中心,上图中 c 就是网络中第 i个隐节点的数据中心值,则表示欧式范数。径向基函数(*)可以取多种形式:i1.Gaussian 函数_t2 /812i (t)e2.Reflected sigmoidal 函数(t)i1/(1t2 / 8 2)亠 ei 丿3.逆 Multiquadric 函数(t)二 1/(ti以上三式中的8称为该基函数的扩展常数(Spread)或宽度。显然i小,径向基函数的宽度就越小,基函数就越具有选择性。与输出节点相连的隐层第i个隐节点的所有参数可用三元组(ci,8i,CO )i表示。每个隐层神经元都对输入x产生一个响应(i,且响应特性成径向对称(即是一个个同心圆),而神经网络的输出则是所有这些响应的加权和,因此第k个输出 可表示为yk由于每个神经元具有局部特性,最终整个 RBF 网络也呈现“局部映射”特性,即 RBF 网络是一种局部相应神经网络。这意味着如果神经网络有较大的输出,必定激活了一个或多个隐节点。RBF 网络的聚类学习算法结构设计,即如何确定网络隐c及扩展常数8 ;输出权值修正。RBF 网络的学习算法应该解决以下问题节点数h;确定各径向基函数的数据中心如果知道了网络的隐节点数、 数据中心和扩展常数, RBF 网络从输入到输出就成了一个线性方程组, 此时权值学习可采用最小二乘法。RBF 网络最常用的学习算法有聚类方法、 梯度训练方法及 OLS 优选算法。下面将详细介绍最经典的RBF网络学习算法一聚类方法,并进行MATLAB仿真。聚类方法的思路是先用无监督学习(用 k-means 算法对样本输入进行聚类)方法确定RBF网络中h个隐节点的数据中心,并根据各数据中心之间的距离确定隐节点的扩展常数,然后用有监督学习(梯度法)训练各隐节点的输出权值。假设XXX为样本输入,相应的样本输出(教师信号)为y yy,网络中第j个隐节点1, 2, , N 1, 2, , N的激活函数为(*) k为迭代次数,第k次迭代时的聚类中心为c (k), c (k),c (k),相应的聚j12, h类域为s (k), s (k),,s (k)。k-means聚类算法确定RBF网络数据中心c和扩展常数S的12hii步骤如下:(1) 算法初始化:选择h个不同的初始聚类中心,并令k=1。初始聚类中心的方法很多,比如, 从样本输入中随机选取, 或者选择前 h 个样本输入,但这 h 个初始数据中心必须取不同值。(2) 计算所有 样本输入与聚类中心的距离 |Xj-ci(k)| ,i=1,2, ,h ,jij=1,2, ,N。(3) 对样本输入X按最小距离原则对其进行分类:即当,h时,Xjji(x j)= min |Xj-ci(k)|,即被归为第 i 类,即 X es (k)ojii=1,2,i(4) 重新计算各类的新的聚类中心:1 X, i 1,2,c (k 1)二h 二iNi X (k)i式中,Ni为第i个聚类域3 (k)中包含的样本数。i如果c (k+1) #c (k),转到步骤(2),否则聚类结束,转到步骤(6)。ii根据各聚类中心之间的距离确定各隐节点的扩展常数。隐节点的扩展常数取s =Kd,其中d为第i个数据中心与其他最近的数据中心之间的距iii离,即 di二 minicj-ci (k),K称重叠系数。331, 2,A则H WRn Xh。如果RBF网络的当前权值为3 =331, 2,)T(待定),则对所有样本,网络输出矢量为为逼近误差,则如果给定了教师信号y=(y y y)t并确定1,2, m一旦各隐节点的数据中心和扩展常数确定了,输出权矢量3 h)T就可以用有监督学习方法(如梯度法)训练得到,但更简洁的方法是使用最小二乘方法(LMS )直接计算。假定当输入为X,i=l,2,i个隐节点的输出如下式所示:h 二 (ijj则隐层输出阵为hij了 H,便可通过最小化下式求出网络的输出权值:y- y通常3可用最小二乘法求得二 H yRBF网络 式中,H 为H的伪逆,即爲 H(Ht H) iHt三、 RBF网络MATLAB 仿真实例题目:基于聚类方法的y=sinx 函数逼近解: RBF 网络隐层采用标准Gaussian 径向基函数,输出层采用线性激活函数,即f( u )二u。数据中心和扩展常数用聚类方法得到,输出权值和偏移采用广义逆方法求解。隐节点数(即聚类数)取10 个训练样本。MATLAB 程序:function main()SamNum=200;TestSamNum=201;InDim=1;ClusterNum=10;Overlap=1.0;10,初始聚类中心取前%训练样本数% 测试样本数%样本输入维数% 隐节点(聚类样本)数%隐节点重叠系数 K%根据目标函数获得样本输入输出rand(state,sum(100*clock);% resets the generator to a different state each time%且 state 不同产生的伪随机序列顺序不同SamIn=14*rand(1,SamNum)-7;TestSamIn=-7:0.07:7;TestSamOut=sin(TestSamIn);%7-(-7)/0.07+1=201个样本SamOut=sin(SamIn);figurehold ongridplot(SamIn,SamOut,b +)plot(TestSamIn,TestSamOut,k -)% 绘制目标函数曲线xlabel(Input x);ylabel(Output y);title( 基于聚类的RBF 网络对函数 y=sinx 的逼近曲线 )Centers=SamIn(:,1:ClusterNum);% 初始聚类中心取前 10 个训练样本NumberInClusters=zeros(ClusterNum,1); %各类中的样本数,初始化为 0IndexInClusters=zeros(ClusterNum,SamNum); %各类所含样本的索引号 while 1,NumberInClusters=zeros(ClusterNum,1);IndexInClusters=zeros(ClusterNum,SamNum);%按最小距离原则对所有样本进行分类for i=1:SamNumAllDistance=dist(Centers,SamIn(:,i); % 求欧几里德距离MinDist,Pos=min(AllDistance);NumberInClusters(Pos)=NumberInClusters(Pos)+1;% 求各类样本的个数IndexInClusters(Pos,NumberInClusters(Pos)=i;end%报存旧的聚类中心OldCenters=Centers;%重新计算各类的聚类中心%计算各隐节点的扩展常数(宽度)5 iAllDistances=dist(Centers,Centers);Maximum=max(max(AllDistances);for i=1:ClusterNumAllDistances(i,i)=Maximum+1;endSpreads=Overlap*min(AllDistances);%计算各隐节点的输出权值Distance=dist(Centers,SamIn);SpreadsMat=repmat(Spreads,1,SamNum);W2Ex=SamOut*pinv(HiddenUnitOutEx);W2=W2Ex(:,1:ClusterNum);B2=W2Ex(:,ClusterNum+1);W2HiddenUnitOut=radbas(Distance./SpreadsMat)HiddenUnitOutEx=HiddenUnitOutRBF网络for i=1:ClusterNumIndex=IndexInClusters(i,1:NumberInClusters(i);Centers(:,i)=mean(SamIn(:,Index);end%判断新旧聚类中心是否一致,如果是,则聚类结束EqualNum=sum(sum(Centers=OldCenters); % 新旧聚类中心一致的个数if EqualNum=InDim*ClusterNum,break,endendKdi,其中di是Cj-Ci(k)的最小欧式距离%求隐节点数据中心间的距离(矩阵)%找出其中最大的一个距离 %某一类的中心到自身的欧式距离是 0, %但要找隐节点间的最小距离,%因此将对角线上的 0 替换为较大的值%以隐节点间的最小距离作为扩展常数%计算各样本输入离各数据中心的距离%repmat径向基函数 j(.)% 计算隐节点输出阵ones(SamNum,1)% 考虑偏移%求广义输出权值。 pinv 求伪逆10B2%测试TestDistance二dist(Centers,TestSamln);TestSpreadsMat二repmat(Spreads,1,TestSamNum);TestHiddenUnitOut二radbas(TestDistance./TestSpreadsMat);Tes tN NOu t二W2* Tes tHiddenUni tOut +repma t(B2,l,Tes tSamNum); plot( Tes tSamIn,Tes tNNOut,r -)四、 输出结果当隐节点重叠系数K为1时,W2 =Columns 1 through 80.97591.19561.24020.95091.39990.03110.13590.9232Columns 9through 100. 79130.1700B2 =0. 8289基干聚类的REiF网塔对函数严:砒的逼近曲垛当隐节点重叠系数K为2时,W2 =Columns 1 through 80.78531.57407.6555T. 73260.01560.0815 Tl. 83861.0188Columns 9 through 109.3149 T.0047B2 =T. 3042H lnd3Q_ !片 i】iiiliB 后4-202460input x五、 结果分析RBF 网络的学习过程与BP 网络的学习过程类似,两种网络中隐节点的非线性变换作用都是把线性不可分问题转化为线性可分问题,因此均可用于函数逼近和分类。两者的主要区别在于各使用不同的激励函数,BP 网络中隐层节点使用的是Sigmoid 函数,其值在输入空间中无限大的范围内为非零值,因而是一种全局逼近的神经网络;而 RBF 网络中的激励函数是Gaussian函数,是一种局部逼近的神经网络,其对于输入空间的某个局部区域只有少 数几个连接权影响网络的输出,因而与BP 网络相比, RBF 网络学习速度更快。聚类方法的优点是能根据各聚类中心之间的距离确定各隐节点的扩展 常数,缺点是确定数据中心时只用到了样本输入信息,而没有用到样本输出 信息;另外聚类方法也无法确定聚类的数目(RBF 网络的隐节点数)。遗传算法遗传算法 MATLAB 仿真一、遗传算法 (GA )的基本思想基于达尔文进化论中的适者生存、优胜劣汰的基本原理,按生物学的方 法将问题的求解表示成“种群( Population) ”(用计算机编程时,一般使用二进制码串表示),从而构造出一群包括 N 个可行解的种群,将它们置于问题 的“环境”中,根据适者生存原则,对该种群按照遗传学的基本操作,不断 优化生成新的种群,这样一代代地不断进化,最后收敛到一个最适应环境的 最优个体上,求得问题的最优解。遗传算法可以形式化的描述如下:GA=( P(0), N, l, s, g, p, f , t )其中, P(0) = ( P1(0), P2(0), , Pn(0) ),表示初始种群; N 表示种群中含有个 体的个数; l 表示二进制串的长度; s 表示选择策略; g 表示遗传算子,通常 它包括有选择(繁殖)算子Qr、杂交算子Qc和变异算子Qm; p表示遗传算子的操作概率,它包括选择概率Pr、Pc和变异概率Pm ; f是适应度函数;t是终止准则。二、Holland 遗传算法 (SGA)该算法的操作对象是一群被称为种群的二进制位串(称为染色体、个 体)。这里的每个染色体都对应求解问题的一个解。SGA 的基本思想是:从初始种群出发,采用基于适应度比例的选择策略在当前种群中选择个体,使 用杂交和变异来产生下一代种群。如此一代代演化下去,直至满足期望的终止条件为止。遗传算法执行一个简单的遗传算法时,需要做以下的准备工作:(1) 根据问题的要求选取设计变量 (即明确需要优化的参数或方案) ,变量的取值范围构成问 题的解空间。这是一个具体问题的数学抽象的过程。(2) 确定变量的约束条件。(3) 确定编码方案。遗传算法求解问题不是直接作用在问题的解空间上,而是利用解的某种编 码表示。通常解(变量)空间中的一个解(变量)被编码成一个串,它是由组成这个解(变量)的一 系列有效信息组成。(4) 确定适应度函数。适应度值是对解的质量的度量,它是遗传算法对种群中的个体执行各 种遗传操作的唯一的依据。(5) 确定选择策略。个体的适应度值是策略中的主要依据,该步骤使适应度值大的解在下一代 有较大的存活概率。 这种轮盘赌的选择策略具有正反馈特征,在自然界中也屡屡出现这样的现象,最 后的结局是可怕的。实际设计中还可以选择锦标赛选择策略或者排序选择策略等。(6) 确定控制参数。它主要包括种群规模、执行不同遗传操作的概率以及其它一些辅助性控 制参数。(7) 设计遗传算子。 进化算法中的遗传算子包括繁殖 (选择)、杂交变异等操作。(8) 确定算法的条件终止准则。三、 Holland 遗传算法流程图选择一个个体执行变异电交叉选择两个个体1i:=i+1r执行巨交到新种群将两个后代插入新种群插入到新种群四、遗传算法 MATLAB 仿真实例例:求下列函数的最大值f(x)=10*sin(5x)+7*cos(4x) , x E 0,10 o遗传算法其中将 x的值用一个10位的二值形式表示。解:分为八个部分:1 初始化(编码)initpopm函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),长度大小取决于变量的二进 制编码的长度(在本例中取10位)。子程序文件名:ini tpopm%初始化function pop二initpop(popsize,chromlength)pop二round(rand(popsize,chromleng th);% rand随机产生每个单元为0,1 行数为popsize,列数为chromlength的矩阵,% round对矩阵的每个单元进行取整。产生初始种群。2.计算目标函数值(1) 将二进制串b9 b8 b0转化为相应的十进制,即9(-b b b :八.b2i )、98” 0Ji10(=x 2i 0子程序文件名: decodebinarym%产生2、2飞n-1)1的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop)px,py=size(pop);%求 pop 行和例数遗传算法popl(:,i)=2 八(pyl)* pop(:,i);py=py-l;endpop2二sum(popl,2);%求 popl 的每行之和(2) 找到相应的实数x,即x 0.0 x 101012其中 0.0 为区间 0,10的左边界,10 为区间长度。decodechrom.m 函数的功能是将染色体 (或二进制编码 )转换为十进制,参数 spoint 表示待解 码的二进制串的起始位置 (对于多个变量而言,如有两个变量,采用 20 位表示,每个变量 10 位,则 第一个变量从 1 开始,另一个变量从 11 开始。本例为 1),参数 length 表示所截取的长度(本例为 10)。子程序文件名: decodechrom.m%将二进制编码转换成十进制function pop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=decodebinary(pop1);(3) 计算目标函数值calobjvalue.m 函数的功能是实现目标函数的计算。子程序文件名: calobjvalue.m%实现目标函数的计算function objvalue=calobjvalue(pop)temp1=decodechrom(pop,1,10); %将 pop 每行转化成十进制数遗传算法x=t empl *10/(2J0T);%将二值域中的数转化为变量域的数objvalue=10*sin(5*x)+7*cos(4*x); % 计算目标函数值3. 计算个体的适应值子程序文件名: calfitvalue.m %计算个体的适应值function fitvalue=calfitvalue(objvalue)global Cmin;Cmin=0;px,py=size(objvalue);for i=1:pxif objvalue(i)+Cmin0temp=Cmin+objvalue(i);elsetemp=0.0;endfitvalue(i)=temp;endfitvalue=fitvalue;4. 选择复制选择或复制操作是决定哪些个体可以进入下一代。程序中采用轮盘赌式选择法进行选择,这种方法较易实现。遗传算法根据方程 pi=fi/工fi二fi/fsum,选择步骤:1) 在第t 代,由上式计算fsum 和 pi2) 产生0,1 的随机数 rand( .),求 s=rand( .)*fsum3) 求pi$s中最小的k ,则第 k个个体被选中4) 进行N 次 2)、3)操作,得到N 个个体,成为第t=t+1 代种群子程序文件名: selection.m%选择复制function newpop=selection(pop,fitvalue)totalfit=sum(fitvalue); % 求适应值之和fitvalue=fitvalue/totalfit; % 单个个体被选择的概率fitvalue=cumsum(fitvalue);% 如fitvalue=1 234, 则cumsum(fitvalue)=1 3 6 10px,py=size(pop);ms=sort(rand(px,1); %从小到大排列fitin=1;newin=1;while newin=pxif(ms(newin) fitvalue (fitin)newpop(newin,:)=pop(fitin,:);newin=newin+1;elsefitin=fitin+1;endend5交叉交叉(crossover),群体中的每个个体之间都以一定的概率pc交叉,即两个个体从各自字符串的某一位置,(一般是随机确定)开始互相交换,这类似生物进化过程中的基因分裂与重组。例如,假设2 个父代个体 x1,x2为:x1=0100110; x2=1010001。从每个个体的第3位开始交叉,交叉后得到2个新的子代个体yl, y2分别为:y1= 0100001; y2 = 1010110。这样2 个子代个体就分别具有了2 个父代个体的某些特征。 利用交叉我们有可能由父代个体在子代组合成具有更高适合度的个体。事实上交叉是遗传算法区别于其它传统优化方法的主要特点之一。子程序文件名: crossover.m%交叉function newpop=crossover(pop,pc)px,py=size(pop);newpop=ones(size(pop);for i=1:2:px-1if(randpc)cpoint=round(rand*py);newpop(i,:)=pop(i,1:cpoint) pop(i+1,cpoint+1:py); newpop(i+1,:)=pop(i+1,1:cpoint) pop(i,cpoint+1:py);else遗传算法newpop(i,:)=pop(i,:);newpop(i+1,:)=pop(i+1,:);endend6变异变异(mutation),基因的突变普遍存在于生物的进化过程中。变异是指父代中的每个个体的每一位都以概率pm 翻转,即由“ 1”变为“ 0”,或由“0”变为“ 1”。遗传算法的变异特性可以使求解过程随机地搜索到解可能存在的整个空间,因 此可以在一定程度上求得全局最优解。子程序文件名: mutation.m %变异function newpop=mutation(pop,pm)px,py=size(pop); newpop=ones(size(pop);for i=1:pxif(randpm)mpoint=round(rand*py);if mpointbestfitbestindividual=pop(i,:);bestfit=fitvalue(i);endend8主程序主程序文件名: GAmaxMAIN.mclearclfpopsize=20; %群体大小chromlength=10; %字符串长度(个体长度)pc=0.6; %交叉概率pm=0.001; %变异概率pop=initpop(popsize,chromlength); %随机产生初始群体for i=1:20 %20 为迭代次数objvalue=calobjvalue(pop); %计算目标函数fitvalue=calfitvalue(objvalue); % 计算群体中每个个体的适应度newpop=selection(pop,fitvalue); %复制newpop=crossover(pop,pc); %交叉newpop=mutation(pop,pm); %变异bestindividual,bestfit=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值y(i)=max(bestfit);n(i)=i;pop5=bestindividual;x(i)二decodechrom(pop5,l,chromleng th)*10/ (2八10T);遗传算法六、 结果分析 从上图可以看出,遗传算法具体实现起来还会存在一些问题,经典遗传 算法并不保证全局最优收敛。( 1)过早收敛现象。在我们设计的进化算法中,物种规模一般都在几十到几百之间,与实际物种规模相比是很小的, 如果个体繁殖量调节得不好,很容易出现超级个体,因此很容易导致算法过早收敛于一个局部最优点,出现过早收敛现象。我们可对超级个体的适应函数增加一惩罚项,从而控制该个体的选择概率,或采用其它选择策略,或增大个体的变异率来增加种群的多样性。( 2)停滞现象。群体中所有的个体都陷于同一适应度而停止进化,可能导致未成熟收敛我们可通过适应度调整来改善。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!