第7讲matlab部分智能优化算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
铜 陵 学 院
function f=fitnessfun(x) f=f(x); 当求解有约束条件用 逻辑语句写进上述 fitnessfun 函数。如 function f=fitnessfun(x) if (x<=0|x>4), f=inf; else, f=f(x); end %即上述优化问题有约束x>0和x<=4. 即上述优化问题有约束x>0和
铜 陵 学 院
人工神经网络是由若干个人工神经元相互连接 组成的广泛并行互联的网络,见下图。因联结 方式的不同,有“前馈神经网络” 简称BP网 方式的不同,有“前馈神经网络”(简称BP网 络)和“反馈神经网络”。 反馈神经网络” 下图是BP网络拓扑结构图。 下图是BP网络拓扑结构图。
铜 陵 学 院
铜 陵 学 院
第七讲
Matlab部分智能 Matlab部分智能 优化算法
铜 陵 学 院
本章主要学习matlab中三个智能优化算法 本章主要学习matlab中三个智能优化算法 及其实现. 及其实现. 一、遗传算法 1、算法的相关知识 2、ga及gatool ga及 二、人工神经网络 1、算法的相关知识 2、newff,newlvq,train,sim及nntool newff,newlvq,train,sim及 三、粒子群算法
铜 陵 学 院
进行了上述三个操作所产生的染色体称为后 进行了上述三个操作所产生的染色体称为后 代。对后代重复进行选择、交叉、变异操作, 经过给定次数的迭代处理以后,把最好的染色 经过给定次数的迭代处理以后,把最好的染色 体作为优化问题的最优解。 2 matlab指令与计算举例 matlab指令与计算举例 格式一:x=ga(@fitnessfun,nvars) 格式一:x=ga(@fitnessfun,nvars) 求解:优化问题 min f(x),其中 nvar 为优化 f(x),其中 问题中变量的个数. 问题中变量的个数. fitnessfun 写成如下的m函 写成如下的m 数形式(fitnessfit.m): 数形式(fitnessfit.m):
Apf: (1.14,1.78), (1.18,1.96), (1.20,1.86), (1.14,1.78), (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.24,1.72), (1.38,1.82), (1.38,1.90), (1.40,1.70), (1.48,1.82), (1.54,1.82), (1.56,2.08).
铜 陵 学 院
一、遗传算法
1、算法简介 遗传算法是一种通过模拟自然进化过程搜索 最优解的方法。在解决复杂优化问题方面效果 显著。算法原理如下: 第一步,产生染色体:随机产生一定数目的 第一步,产生染色体:随机产生一定数目的 初始染色体(它们组成一个种群),种群中染 色体的数目称为种群的大小或规模; 第二步,评价染色体:用评价函数来评价每 第二步,评价染色体:用评价函数来评价每 一个染色体的优劣,即用染色体对环境的适应
铜 陵 学 院
如果用 fminunc 求解的话,由于对初值的高度 敏感性而难以得到全局最优解,而遗传算法的 整体优化搜索则可以得到或逼近整体最优值. 整体优化搜索则可以得到或逼近整体最优值. 例 2 运用遗传算法计算约束非线性规划: min f(x)=e^x1*(4x1^2+2x2^2+4x1x2+2x2+1). f(x)=e^x1*(4x1^2+2x2^2+4x1x2+2x2+1). s.t. 1.5+x1x2-x11.5+x1x2-x1-x2<=0, -x1x2<=10. 首先编写程序如下: function f=ga_exam2(x) if (1.5+x(1)*x(2)-x(1)-x(2)>0 | -x(1)*x(2)>10), (1.5+x(1)*x(2)-x(1)f=100;
2、matlab命令与计算举例 matlab命令与计算举例 (1) net=newff(PR,[S1,…,Sn],{TF1,…,TFn}) net=newff(PR,[S1,…,Sn],{TF1,… %生成一个BP网络,其中:PR是由R个输入中各 生成一个BP网络,其中:PR是由R 样本值的最小和最大构成的R*2矩阵;Si表示第 样本值的最小和最大构成的R*2矩阵;Si表示第 i层的节点数,共有n层;TFi表示第i层的传输函数 层的节点数,共有n ;TFi表示第i 字符串,默认为’tansig’ 字符串,默认为’tansig’. (2) net=newlvq(PR, N, PC) %生成一个学习向量量化(lvq)神经网络,其中: 生成一个学习向量量化(lvq)神经网络,其中: PR含义同上;N表示隐层数目;PC表示各类别所 PR含义同上;N表示隐层数目;PC表示各类别所 占的百分比. 占的百分比. (3) [net,tr,Y,E]=train(net, P, T)
>>[net,tr]=train(net,x,y) >>[net,tr]=train(net,x,y)
铜 陵 学 院
最后,应用经过训练的net仿真: 最后,应用经过训练的net仿真: >>y1=sim(net,x) >>y1=sim(net,x) 对比仿真效果: 对比仿真效果: >>E=y-y1;MSE=mse(E) %计算仿真误差 >>E=y>>hold on >>hold >>plot(x,y,’r*’,x,y1,’b’) >>plot(x,y,’r*’,x,y1,’b’) >>hold off 从结果可以看出,仿真效果很好:在图形上, 从结果可以看出,仿真效果很好:在图形上, 红色’ 红色’*’是原数据, 蓝色实线’—’是仿真结 是原数据, 蓝色实线’ 果.
铜 陵 学 院
格式二:[x,f,reason]=ga(@fitnessfun,nvars) 格式二:[x,f,reason]=ga(@fitnessfun,nvars) %同时返回解 x 处的函数值 f 和算法终止原因. 和算法终止原因. matlab还提供了遗传算法运算工具命令gatool. matlab还提供了遗传算法运算工具命令gatool. 例 1 分别用优化工具箱中的fminunc函数和遗 分别用优化工具箱中的fminunc函数和遗 传算法计算非线性规划: max f(x)=xsin(10 pi x)+2, x\in [-1,2]. x\ 首先用遗传算法求解,编写程序如下: function f=ga_exam1(x) if (x<=-1 | x>2), (x<=f=100; else, f=-x.*sin(10*pi*x)f=-x.*sin(10*pi*x)-2; end
铜 陵 学 院
function f=ga_exam3(x) f=0.5-((sin(sqrt(x(1)^2+x(2)^2)))^2f=0.5-((sin(sqrt(x(1)^2+x(2)^2)))^2-0.5)/ (1+0.01*(x(1)^2+x(2)^2))^2 通过对比,遗传算法在整体最优化方面强于 matlab其他优化命令,但明显弱于1stopt matlab其他优化命令,但明显弱于1stopt .
铜 陵 学 院
0 .6 0 .5 0 .4 0 .3 0 .2 0 .1 0 -0 .1 -0 .2 -0 .3
0
1
2
3
4
5
6
7
8
9
10
应用人工神经网络拟合函数: 应用人工神经网络拟合函数: y=0.12e^(-0.23x)+0.54e^(y=0.12e^(-0.23x)+0.54e^(-0.17x)sin(1.23x). 红色’ 红色’*’是原数据, 蓝色实线’—’是仿真 是原数据, 蓝色实线’ 结果. 结果.
铜 陵 学 院
程度(简称为适应度)来作为以后遗传操作的 依据; 第三步,进行选择操作:选择的目的是为了 第三步,进行选择操作:选择的目的是为了 从当前种群中选出优良的染色体,判断染色体 优良与否的准则是各自的适应度,即染色体的 适应度越高,其被选择的机会就越多; 第四步,进行交叉操作:对选择出来的新种 第四步,进行交叉操作:对选择出来的新种 群进行交叉操作; 第五步,进行变异操作:变异操作的目的是 第五步,进行变异操作:变异操作的目的是 为了挖掘种群中个体的多样性,克服有可能陷 入局部解的弊病。
铜 陵 学 院
%对上面生成的神经网络net的参数进行训练. 对上面生成的神经网络net的参数进行训练. 其中: P为n*N样本输入矩阵, n为输入变量维 其中: P为n*N样本输入矩阵, n为输入变量维 数, N为样本组数; T为m*N输出矩阵,m为输出 N为样本组数; T为m*N输出矩阵,m为输出 变量维数; net返回训练后得到的神经网络; 变量维数; net返回训练后得到的神经网络; tr 为结构体数据, 返回训练的相关跟踪信息, 为结构体数据, 返回训练的相关跟踪信息, tr.epoch为训练步数,tr.perf为各步目标函数值. tr.epoch为训练步数,tr.perf为各步目标函数值. (4) Y=sim(net,P) % 应用第(3)步训练后得到的神经网络net, 计 应用第(3)步训练后得到的神经网络net, 算新的输入数据的值Y,即是仿真(或称泛化). 算新的输入数据的值Y,即是仿真(或称泛化). 另: nntool神经网络工具命令. nntool神经网络工具命令.
铜 陵 学 院
二、人工神经网络
1、预备知识:人工神经网络基本知识 (1)生物神经元—大脑的一个重要成分是神 )生物神经元— 经网络,神经网络由相互关联的神经元组成. 经网络,神经网络由相互关联的神经元组成.
铜 陵 学 院
(2)人工神经元与神经网络 1943年美国心理学家W.McCulloch和数学家 1943年美国心理学家W.McCulloch和数学家 W.Pitts 提出了一个简单的神经元模型—MP模 提出了一个简单的神经元模型—MP模 型,如下图. 型,如下图.
铜 陵 学 院
例2 蠓虫分类(美国1989年建模赛题) 蠓虫分类(美国1989年建模赛题) 两种蠓虫Apf和Af已由生物学家Grogan和 两种蠓虫Apf和Af已由生物学家Grogan和 Wirth于1981年根据他们的触角长度和翅长加 Wirth于1981年根据他们的触角长度和翅长加 以区分. 现测得6 Apf蠓虫和9 Af蠓虫的触 以区分. 现测得6只Apf蠓虫和9只Af蠓虫的触 长、翅长的数据如下:
铜 陵 学 院
例1 用人工神经网络拟合函数 y=0.12e^(-0.23x)+0.54e^(y=0.12e^(-0.23x)+0.54e^(-0.17x)sin(1.23x). 首先生成样本数据: 首先生成样本数据: >>x=0:0.25:10; >>x=0:0.25:10; >>y=0.12*exp(-0.23*x)+0.54*exp(>>y=0.12*exp(-0.23*x)+0.54*exp(0.17*x).*sin(1.23*x); 其次,生成BP网络: 其次,生成BP网络: >>net=newff(minmax(x),[20,1],{‘tansig’,’purelin’}) 然后利用样本数据训练网络 然后利用样本数据训练网络:
铜 陵 学 院
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-(sin^2(sqrt(x^2+y^2))-0.5)/ f(x,y)=0.5-(sin^2(sqrt(x^2+y^2))(1+0.01(x^2+y^2))^2. 函数 f(x,y) 的复杂度较高,它有无限个局部极 大值点,其中只有一个(0,0)为全局最大值点, 大值点,其中只有一个(0,0)为全局最大值点, 最大值为1 最大值为1。