matlab部分智能优化算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>>[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 从结果可以看出,仿真效果很好:在图形上, 红色’*’是原数据, 蓝色实线’—’是仿真结 果.
例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), (1.48,1.82), (1.54,1.82), (1.56,2.08).
铜 陵 学 院
第七讲
Matlab部分智能 优化算法
铜 陵 学 院
本章主要学习matlab中三个智能优化算法 及其实现. 一、遗传算法 1、算法的相关知识 2、ga及gatool 二、人工神经网络 1、算法的相关知识 2、newff,newlvq,train,sim及nntool 三、粒子群算法
铜 陵 学 院
铜 陵 学 院
程度(简称为适应度)来作为以后遗传操作的 依据; 第三步,进行选择操作:选择的目的是为了 从当前种群中选出优良的染色体,判断染色体 优良与否的准则是各自的适应度,即染色体的 适应度越高,其被选择的机会就越多; 第四步,进行交叉操作:对选择出来的新种 群进行交叉操作; 第五步,进行变异操作:变异操作的目的是 为了挖掘种群中个体的多样性,克服有可能陷 入局部解的弊病。
铜 陵 学 院
格式二:[x,f,reason]=ga(@fitnessfun,nvars) %同时返回解 x 处的函数值 f 和算法终止原因. matlab还提供了遗传算法运算工具命令gatool.
例 1 分别用优化工具箱中的fminunc函数和遗 传算法计算非线性规划: max f(x)=xsin(10 pi x)+2, x\in [-1,2]. 首先用遗传算法求解,编写程序如下: function f=ga_exam1(x) if (x<=-1 | x>2), f=100; else, f=-x.*sin(10*pi*x)-2; end
铜 陵 学 院
%对上面生成的神经网络net的参数进行训练. 其中: P为n*N样本输入矩阵, n为输入变量维 数, N为样本组数; T为m*N输出矩阵,m为输出 变量维数; net返回训练后得到的神经网络; tr 为结构体数据, 返回训练的相关跟踪信息, tr.epoch为训练步数,tr.perf为各步目标函数值. (4) Y=sim(net,P) % 应用第(3)步训练后得到的神经网络net, 计 算新的输入数据的值Y,即是仿真(或称泛化). 另: nntool神经网络工具命令.
人工神经网络是由若干个人工神经元相互连接 组成的广泛并行互联的网络,见下图。因联结 方式的不同,有“前馈神经网络”(简称BP网 络)和“反馈神经网络”。 下图是BP网络拓扑结构图。
铜 陵 学 院
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)
铜 陵 学 院
如果用 fminunc 求解的话,由于对初值的高度 敏感性而难以得到全局最优解,而遗传算法的 整体优化搜索则可以得到或逼近整体最优值.
例 2 运用遗传算法计算约束非线性规划: min f(x)=e^x1*(4x1^2+2x2^2+4x1x2+2x2+1). s.t. 1.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), f=100;
铜 陵 学 院
个粒子组成的一个群体,其中第i个粒子表示 为 Xi=(xi1,xi2,…,xiD),即其位置为Xi ,换言 之,每个粒子的位置就是一个潜在的解,将 Xi 代入目标函数,就可以计算出其适应值, 根据适应值的大小衡量其优劣,它经历过的 最好位置记为 Pi=(pi1,pi2,…,piD),整个群体 所有粒子经历过的最好位置记为 Pg=(pg1,pg2,…,pgD). 粒子i的速度表示为 Vi=(vi1,vi2,…,viD).
铜 陵 学 院
y1=vec2ind(ytmp; xt=[1.24 1.28 1.40;1.80 1.84 2.04]; yttmp=sim(net,xt) yt=vce2ind(yttmp) figure plot(Apf(1,:),Apf(2,:),'+',Af(1,:),Af(2,:),'o',xt (1,:),xt(2,:),'*') legend('Apf','Af','samples') 运行上述程序,得结果图形如后。
铜 陵 学 院
粒子群算法采用下列公式对粒子进行操作: vij=wvij+c1r1(pij-xij)+c2r2(pgj-xij) xij=xij+avij, 其中i=1,2,…,m; j=1,2,…,D; w为非负数, 称 为惯性因子; c1,c2为非负数, 称为学习因子; r1,r2为[0,1]内变化的随机数; a称为约束因子, 目的是控制速度的权重(其意义是时间). 此外,vi\in [-vmax,vmax], 即粒子的速度被一 个最大速度所限制. 若当前时刻粒子的某维 速度vij更新后超过该维的最大速度vmax,j,则当 前时刻该维的速度被限制为vmax,j. vmax,j为常
铜 陵 学 院
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.
二、人工神经网络
1、预备知识:人工神经网络基本知识 (1)生物神经元—大脑的一个重要成分是神 经网络,神经网络由相互关联的神经元组成.
铜 陵 学 院
(2)人工神经元与神经网络 1943年美国心理学家W.McCulloch和数学家 W.Pitts 提出了一个简单的神经元模型—MP模 型,如下图.
铜 陵 学 院
一、遗传算法
1、算法简介 遗传算法是一种通过模拟自然进化过程搜索 最优解的方法。在解决复杂优化问题方面效果 显著。算法原理如下: 第一步,产生染色体:随机产生一定数目的 初始染色体(它们组成一个种群),种群中染 色体的数目称为种群的大小或规模; 第二步,评价染色体:用评价函数来评价每 一个染色体的优劣,即用染色体对环境的适应
铜 陵 学 院
进行了上述三个操作所产生的染色体称为后 代。对后代重复进行选择、交叉、变异操作, 经过给定次数的迭代处理以后,把最好的染色 体作为优化问题的最优解。 2 matlab指令与计算举例 格式一:x=ga(@fitnessfun,nvars) 求解:优化问题 min f(x),其中 nvar 为优化 问题中变量的个数. fitnessfun 写成如下的m函 数形式(fitnessfit.m):
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;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);
铜 陵 学 院
数,可以根据不同的优化问题设定。 算法终止条件根据具体问题设定,一般选 为预定最大迭代次数或粒子群目前为止搜索 到的最优位置满足预定最小适应阀值. 上述粒子群算法被称为全局版粒子群算法。 例 用粒子群算法计算下述函数的最大值:
铜 陵 学 院
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^(-0.17x)sin(1.23x). 红色’*’是原数据, 蓝色实线’—’是仿真 结果.
铜 陵 学 院
铜 陵 学 院
function f=ga_exam3(x) f=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 .
铜 陵 学 院
请用恰当的方法对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;
铜 陵 学 院
2.1 2.05 2 1.95 1.9 1.85 1.8 1.75 1.7 1.65 1.6 1.1 Apf Af samples 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6
铜 陵 学 院
三、粒子群算法
粒子群算法是模仿生物社会系统,更确切 地说,是由简单个体组成的群体与环境以及 个体之间的互动行为,是一种基于群智能方 法的进化计算技术,也是一种基于群体迭代 的优化工具.1995年源于Eberhart与Kennedy 对鸟群捕食行为的研究。此处粗略讲解其算 法原理、操作步骤及应用。 假设在一个D维的目标搜索空间中,有m
铜 陵 学 院
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)/ (1+0.01(x^2+y^2))^2. 函数 f(x,y) 的复杂度较高,它有无限个局部极 大值点,其中只有一个(0,0)为全局最大值点, 最大值为1。
铜 陵 学 院
例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(0.17*x).*sin(1.23*x); 其次,生成BP网络: >>net=newff(minmax(x),[20,1],{‘tansig’,’purelin’}) 然后利用样本数据训练网络:
铜 陵 学 院
最后,应用经过训练的net仿真: >>y1=sim(net,x) 对比仿真效果: >>E=y-y1;MSE=mse(E) %计算仿真误差 >>hold on >>plot(x,y,’r*’,x,y1,’b’) >>hold off 从结果可以看出,仿真效果很好:在图形上, 红色’*’是原数据, 蓝色实线’—’是仿真结 果.
例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), (1.48,1.82), (1.54,1.82), (1.56,2.08).
铜 陵 学 院
第七讲
Matlab部分智能 优化算法
铜 陵 学 院
本章主要学习matlab中三个智能优化算法 及其实现. 一、遗传算法 1、算法的相关知识 2、ga及gatool 二、人工神经网络 1、算法的相关知识 2、newff,newlvq,train,sim及nntool 三、粒子群算法
铜 陵 学 院
铜 陵 学 院
程度(简称为适应度)来作为以后遗传操作的 依据; 第三步,进行选择操作:选择的目的是为了 从当前种群中选出优良的染色体,判断染色体 优良与否的准则是各自的适应度,即染色体的 适应度越高,其被选择的机会就越多; 第四步,进行交叉操作:对选择出来的新种 群进行交叉操作; 第五步,进行变异操作:变异操作的目的是 为了挖掘种群中个体的多样性,克服有可能陷 入局部解的弊病。
铜 陵 学 院
格式二:[x,f,reason]=ga(@fitnessfun,nvars) %同时返回解 x 处的函数值 f 和算法终止原因. matlab还提供了遗传算法运算工具命令gatool.
例 1 分别用优化工具箱中的fminunc函数和遗 传算法计算非线性规划: max f(x)=xsin(10 pi x)+2, x\in [-1,2]. 首先用遗传算法求解,编写程序如下: function f=ga_exam1(x) if (x<=-1 | x>2), f=100; else, f=-x.*sin(10*pi*x)-2; end
铜 陵 学 院
%对上面生成的神经网络net的参数进行训练. 其中: P为n*N样本输入矩阵, n为输入变量维 数, N为样本组数; T为m*N输出矩阵,m为输出 变量维数; net返回训练后得到的神经网络; tr 为结构体数据, 返回训练的相关跟踪信息, tr.epoch为训练步数,tr.perf为各步目标函数值. (4) Y=sim(net,P) % 应用第(3)步训练后得到的神经网络net, 计 算新的输入数据的值Y,即是仿真(或称泛化). 另: nntool神经网络工具命令.
人工神经网络是由若干个人工神经元相互连接 组成的广泛并行互联的网络,见下图。因联结 方式的不同,有“前馈神经网络”(简称BP网 络)和“反馈神经网络”。 下图是BP网络拓扑结构图。
铜 陵 学 院
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)
铜 陵 学 院
如果用 fminunc 求解的话,由于对初值的高度 敏感性而难以得到全局最优解,而遗传算法的 整体优化搜索则可以得到或逼近整体最优值.
例 2 运用遗传算法计算约束非线性规划: min f(x)=e^x1*(4x1^2+2x2^2+4x1x2+2x2+1). s.t. 1.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), f=100;
铜 陵 学 院
个粒子组成的一个群体,其中第i个粒子表示 为 Xi=(xi1,xi2,…,xiD),即其位置为Xi ,换言 之,每个粒子的位置就是一个潜在的解,将 Xi 代入目标函数,就可以计算出其适应值, 根据适应值的大小衡量其优劣,它经历过的 最好位置记为 Pi=(pi1,pi2,…,piD),整个群体 所有粒子经历过的最好位置记为 Pg=(pg1,pg2,…,pgD). 粒子i的速度表示为 Vi=(vi1,vi2,…,viD).
铜 陵 学 院
y1=vec2ind(ytmp; xt=[1.24 1.28 1.40;1.80 1.84 2.04]; yttmp=sim(net,xt) yt=vce2ind(yttmp) figure plot(Apf(1,:),Apf(2,:),'+',Af(1,:),Af(2,:),'o',xt (1,:),xt(2,:),'*') legend('Apf','Af','samples') 运行上述程序,得结果图形如后。
铜 陵 学 院
粒子群算法采用下列公式对粒子进行操作: vij=wvij+c1r1(pij-xij)+c2r2(pgj-xij) xij=xij+avij, 其中i=1,2,…,m; j=1,2,…,D; w为非负数, 称 为惯性因子; c1,c2为非负数, 称为学习因子; r1,r2为[0,1]内变化的随机数; a称为约束因子, 目的是控制速度的权重(其意义是时间). 此外,vi\in [-vmax,vmax], 即粒子的速度被一 个最大速度所限制. 若当前时刻粒子的某维 速度vij更新后超过该维的最大速度vmax,j,则当 前时刻该维的速度被限制为vmax,j. vmax,j为常
铜 陵 学 院
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.
二、人工神经网络
1、预备知识:人工神经网络基本知识 (1)生物神经元—大脑的一个重要成分是神 经网络,神经网络由相互关联的神经元组成.
铜 陵 学 院
(2)人工神经元与神经网络 1943年美国心理学家W.McCulloch和数学家 W.Pitts 提出了一个简单的神经元模型—MP模 型,如下图.
铜 陵 学 院
一、遗传算法
1、算法简介 遗传算法是一种通过模拟自然进化过程搜索 最优解的方法。在解决复杂优化问题方面效果 显著。算法原理如下: 第一步,产生染色体:随机产生一定数目的 初始染色体(它们组成一个种群),种群中染 色体的数目称为种群的大小或规模; 第二步,评价染色体:用评价函数来评价每 一个染色体的优劣,即用染色体对环境的适应
铜 陵 学 院
进行了上述三个操作所产生的染色体称为后 代。对后代重复进行选择、交叉、变异操作, 经过给定次数的迭代处理以后,把最好的染色 体作为优化问题的最优解。 2 matlab指令与计算举例 格式一:x=ga(@fitnessfun,nvars) 求解:优化问题 min f(x),其中 nvar 为优化 问题中变量的个数. fitnessfun 写成如下的m函 数形式(fitnessfit.m):
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;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);
铜 陵 学 院
数,可以根据不同的优化问题设定。 算法终止条件根据具体问题设定,一般选 为预定最大迭代次数或粒子群目前为止搜索 到的最优位置满足预定最小适应阀值. 上述粒子群算法被称为全局版粒子群算法。 例 用粒子群算法计算下述函数的最大值:
铜 陵 学 院
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^(-0.17x)sin(1.23x). 红色’*’是原数据, 蓝色实线’—’是仿真 结果.
铜 陵 学 院
铜 陵 学 院
function f=ga_exam3(x) f=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 .
铜 陵 学 院
请用恰当的方法对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;
铜 陵 学 院
2.1 2.05 2 1.95 1.9 1.85 1.8 1.75 1.7 1.65 1.6 1.1 Apf Af samples 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6
铜 陵 学 院
三、粒子群算法
粒子群算法是模仿生物社会系统,更确切 地说,是由简单个体组成的群体与环境以及 个体之间的互动行为,是一种基于群智能方 法的进化计算技术,也是一种基于群体迭代 的优化工具.1995年源于Eberhart与Kennedy 对鸟群捕食行为的研究。此处粗略讲解其算 法原理、操作步骤及应用。 假设在一个D维的目标搜索空间中,有m
铜 陵 学 院
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)/ (1+0.01(x^2+y^2))^2. 函数 f(x,y) 的复杂度较高,它有无限个局部极 大值点,其中只有一个(0,0)为全局最大值点, 最大值为1。
铜 陵 学 院
例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(0.17*x).*sin(1.23*x); 其次,生成BP网络: >>net=newff(minmax(x),[20,1],{‘tansig’,’purelin’}) 然后利用样本数据训练网络: