第7讲matlab部分智能优化算法概要

上传人:今*** 文档编号:110043624 上传时间:2019-10-28 格式:PPT 页数:28 大小:452.50KB
返回 下载 相关 举报
第7讲matlab部分智能优化算法概要_第1页
第1页 / 共28页
第7讲matlab部分智能优化算法概要_第2页
第2页 / 共28页
第7讲matlab部分智能优化算法概要_第3页
第3页 / 共28页
第7讲matlab部分智能优化算法概要_第4页
第4页 / 共28页
第7讲matlab部分智能优化算法概要_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《第7讲matlab部分智能优化算法概要》由会员分享,可在线阅读,更多相关《第7讲matlab部分智能优化算法概要(28页珍藏版)》请在金锄头文库上搜索。

1、Matlab部分智能 优化算法,第 七 讲,本章主要学习matlab中三个智能优化算法 及其实现. 一、遗传算法 1、算法的相关知识 2、ga及gatool 二、人工神经网络 1、算法的相关知识 2、newff,newlvq,train,sim及nntool 三、粒子群算法,一、遗传算法,1、算法简介 遗传算法是一种通过模拟自然进化过程搜索 最优解的方法。在解决复杂优化问题方面效果 显著。算法原理如下: 第一步,产生染色体:随机产生一定数目的 初始染色体(它们组成一个种群),种群中染 色体的数目称为种群的大小或规模; 第二步,评价染色体:用评价函数来评价每 一个染色体的优劣,即用染色体对环境的

2、适应,程度(简称为适应度)来作为以后遗传操作的 依据; 第三步,进行选择操作:选择的目的是为了 从当前种群中选出优良的染色体,判断染色体 优良与否的准则是各自的适应度,即染色体的 适应度越高,其被选择的机会就越多; 第四步,进行交叉操作:对选择出来的新种 群进行交叉操作; 第五步,进行变异操作:变异操作的目的是 为了挖掘种群中个体的多样性,克服有可能陷 入局部解的弊病。,进行了上述三个操作所产生的染色体称为后 代。对后代重复进行选择、交叉、变异操作, 经过给定次数的迭代处理以后,把最好的染色 体作为优化问题的最优解。 2 matlab指令与计算举例 格式一:x=ga(fitnessfun,nv

3、ars) 求解:优化问题 min f(x),其中 nvar 为优化 问题中变量的个数. fitnessfun 写成如下的m函 数形式(fitnessfit.m):,function f=fitnessfun(x) f=f(x); 当求解有约束优化问题时,可将约束条件用逻辑语句写进上述 fitnessfun 函数。如 function f=fitnessfun(x) if (x4), f=inf; else, f=f(x); end %即上述优化问题有约束x0和x=4.,格式二:x,f,reason=ga(fitnessfun,nvars) %同时返回解 x 处的函数值 f 和算法终止原因. m

4、atlab还提供了遗传算法运算工具命令gatool. 例 1 分别用优化工具箱中的fminunc函数和遗传算法计算非线性规划: max f(x)=xsin(10 pi x)+2, xin -1,2. 首先用遗传算法求解,编写程序如下: function f=ga_exam1(x) if (x2), f=100; else, f=-x.*sin(10*pi*x)-2; end,如果用 fminunc 求解的话,由于对初值的高度敏感性而难以得到全局最优解,而遗传算法的整体优化搜索则可以得到或逼近整体最优值. 例 2 运用遗传算法计算约束非线性规划: min f(x)=ex1*(4x12+2x22+

5、4x1x2+2x2+1). s.t. 1.5+x1x2-x1-x20 | -x(1)*x(2)10), f=100;,else f= exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1); end 例 3 运用遗传算法计算下列函数最大值: max f(x,y)=0.5-(sin2(sqrt(x2+y2)-0.5)/ (1+0.01(x2+y2)2. 函数 f(x,y) 的复杂度较高,它有无限个局部极大值点,其中只有一个(0,0)为全局最大值点,最大值为1。,function f=ga_exam3(x) f=0.5-(sin(sqrt(x(1)2+x(2

6、)2)2-0.5)/ (1+0.01*(x(1)2+x(2)2)2 通过对比,遗传算法在整体最优化方面强于 matlab其他优化命令,但明显弱于1stopt .,二、人工神经网络,1、预备知识:人工神经网络基本知识 (1)生物神经元大脑的一个重要成分是神经网络,神经网络由相互关联的神经元组成., ,(2)人工神经元与神经网络 1943年美国心理学家W.McCulloch和数学家W.Pitts 提出了一个简单的神经元模型MP模型,如下图.,人工神经网络是由若干个人工神经元相互连接组成的广泛并行互联的网络,见下图。因联结方式的不同,有“前馈神经网络”(简称BP网络)和“反馈神经网络”。 下图是BP

7、网络拓扑结构图。,2、matlab命令与计算举例 (1) net=newff(PR,S1,Sn,TF1,TFn) %生成一个BP网络,其中:PR是由R个输入中各样本值的最小和最大构成的R*2矩阵;Si表示第 i层的节点数,共有n层;TFi表示第i层的传输函数字符串,默认为tansig. (2) net=newlvq(PR, N, PC) %生成一个学习向量量化(lvq)神经网络,其中: PR含义同上;N表示隐层数目;PC表示各类别所占的百分比. (3) net,tr,Y,E=train(net, P, T),%对上面生成的神经网络net的参数进行训练. 其中: P为n*N样本输入矩阵, n为输

8、入变量维 数, N为样本组数; T为m*N输出矩阵,m为输出 变量维数; net返回训练后得到的神经网络; tr为结构体数据, 返回训练的相关跟踪信息, tr.epoch为训练步数,tr.perf为各步目标函数值. (4) Y=sim(net,P) % 应用第(3)步训练后得到的神经网络net, 计算新的输入数据的值Y,即是仿真(或称泛化). 另: nntool神经网络工具命令.,例1 用人工神经网络拟合函数 y=0.12e(-0.23x)+0.54e(-0.17x)sin(1.23x). 首先生成样本数据: x=0:0.25:10; y=0.12*exp(-0.23*x)+0.54*exp(

9、-0.17*x).*sin(1.23*x); 其次,生成BP网络: net=newff(minmax(x),20,1,tansig,purelin) 然后利用样本数据训练网络: net,tr=train(net,x,y),最后,应用经过训练的net仿真: y1=sim(net,x) 对比仿真效果: E=y-y1;MSE=mse(E) %计算仿真误差 hold on plot(x,y,r*,x,y1,b) hold off,从结果可以看出,仿真效果很好:在图形上,红色*是原数据, 蓝色实线是仿真结果.,应用人工神经网络拟合函数: y=0.12e(-0.23x)+0.54e(-0.17x)sin(

10、1.23x). 红色*是原数据, 蓝色实线是仿真结果.,例2 蠓虫分类(美国1989年建模赛题) 两种蠓虫Apf和Af已由生物学家Grogan和 Wirth于1981年根据他们的触角长度和翅长加 以区分. 现测得6只Apf蠓虫和9只Af蠓虫的触 长、翅长的数据如下: Apf: (1.14,1.78), (1.18,1.96), (1.20,1.86), (1.26,2.00), (1.28,2.00), (1.30,1.96); Af: (1.24,1.72), (1.36,1.74), (1.38,1.64), (1.38,1.82), (1.38,1.90), (1.40,1.70), (

11、1.48,1.82), (1.54,1.82), (1.56,2.08). 请用恰当的方法对3只触长、翅长分别为,(1.24,1.80), (1.28,1.84), (1.40,2.04) 的蠓虫进行识别。 设计一个lvq神经网络进行分类.程序如下: clear Apf=1.14,1.78;1.18,1.96;1.20,1.86; 1.26,2.00;1.28,2.00;1.30,1.96; Af= 1.24,1.72;1.36,1.74;1.38,1.64; 1.38,1.82;1.38,1.90;1.40,1.70; 1.48,1.82;1.54,1.82;1.56,2.08; x=Apf

12、;Af; %输入向量,y0=ones(1,6) 2*ones(1,9); %类1表示Apf, 类2表示Af; y=ind2vec(y0); %将下标向量转换为单值向量作为目标向量 net=newlvq(minmax(x),8,0.6 0.4); %建立lvq网络 net.trainParam.show=100; net.trainParam.epoch=1000; %设置参数 net=train(net,x,y); ytmp=sim(net,x);,y1=vec2ind(ytmp; xt=1.24 1.28 1.40;1.80 1.84 2.04; yttmp=sim(net,xt) yt=v

13、ce2ind(yttmp) figure plot(Apf(1,:),Apf(2,:),+,Af(1,:),Af(2,:),o,xt(1,:),xt(2,:),*) legend(Apf,Af,samples) 运行上述程序,得结果图形如后。,三、粒子群算法,粒子群算法是模仿生物社会系统,更确切 地说,是由简单个体组成的群体与环境以及 个体之间的互动行为,是一种基于群智能方 法的进化计算技术,也是一种基于群体迭代 的优化工具.1995年源于Eberhart与Kennedy 对鸟群捕食行为的研究。此处粗略讲解其算 法原理、操作步骤及应用。 假设在一个D维的目标搜索空间中,有m,个粒子组成的一个群

14、体,其中第i个粒子表示 为 Xi=(xi1,xi2,xiD),即其位置为Xi ,换言 之,每个粒子的位置就是一个潜在的解,将 Xi 代入目标函数,就可以计算出其适应值, 根据适应值的大小衡量其优劣,它经历过的 最好位置记为 Pi=(pi1,pi2,piD),整个群体 所有粒子经历过的最好位置记为 Pg=(pg1,pg2,pgD). 粒子i的速度表示为 Vi=(vi1,vi2,viD).,粒子群算法采用下列公式对粒子进行操作: vij=wvij+c1r1(pij-xij)+c2r2(pgj-xij) xij=xij+avij, 其中i=1,2,m; j=1,2,D; w为非负数, 称 为惯性因子

15、; c1,c2为非负数, 称为学习因子; r1,r2为0,1内变化的随机数; a称为约束因子, 目的是控制速度的权重(其意义是时间). 此外,viin -vmax,vmax, 即粒子的速度被一 个最大速度所限制. 若当前时刻粒子的某维 速度vij更新后超过该维的最大速度vmax,j,则当 前时刻该维的速度被限制为vmax,j. vmax,j为常,数,可以根据不同的优化问题设定。 算法终止条件根据具体问题设定,一般选 为预定最大迭代次数或粒子群目前为止搜索 到的最优位置满足预定最小适应阀值. 上述粒子群算法被称为全局版粒子群算法。 例 用粒子群算法计算下述函数的最大值:,求解程序链接。,THANK YOU FOR YOUR PRESENCE,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号