当已有数据量不够,需要补充,且认定已有数据可信时,通常利用函数插值方法。
常用插值方法
matlab插值实现
interp1(一维插值)
yi=interp1(x,y,xi,'method');
'nearest'
最邻近插值;'linear'
线性插值;'spline'
三次样条插值;'cubic'
立方插值;default
分段线性插值
interp2(二维)
zi=interp2(x,y,z,xi,yi,'method');
'nearest'
最邻近插值;'linear'
双线性插值;'cubic'
双三次插值;default
双线性插值
interp3(三维)
interpn(n维)
griddata
[cx,cy]=meshgrid(cx,cy);
cz=griddata(x,y,z,cx,cy,'method');
'nearest'
最邻近插值;'linear'
双线性插值;'cubic'
双三次插值;'v4'
-MATLAB提供的插值方法;default
双线性插值
基本思路:先选定一组函数 r 1 ( x ) r_1(x) r1(x), r 2 ( x ) r_2(x) r2(x),…, r m ( x ) r_m(x) rm(x), m < n m
记 J ( a 1 , a 2 , . . . , a m ) = ∑ i = 1 n δ i 2 = ∑ i = 1 n [ f ( x i ) − y i ] 2 = ∑ i = 1 n [ ∑ k = 1 m a k r k ( x i ) − y i ] 2 J\left ( a_{1},a_{2},...,a_{m} \right ) =\sum_{i=1}^{n} \delta _{i}^{2} =\sum_{i=1}^{n} [f(x_{i})-y_i]^{2}=\sum_{i=1}^{n}[\sum_{k=1}^m a_kr_k(x_i)-y_i]^2 J(a1,a2,...,am)=∑i=1nδi2=∑i=1n[f(xi)−yi]2=∑i=1n[∑k=1makrk(xi)−yi]2
基本函数命令:作多项式 f ( x ) = a 1 x m + a 2 x m − 1 + . . . + a m x + a m + 1 f(x)=a_1x^m+a_2x^{m-1}+...+a_mx+a_{m+1} f(x)=a1xm+a2xm−1+...+amx+am+1拟合,可利用已有程序:
a=polyfit(x,y,m)
输入同长度的数组x,y,拟合多项次数m
多项式在x处的值y可用以下命令计算:
y=polyval(a,x)
y = a + b x y=a+bx y=a+bx
y = a e b x y=ae^{bx} y=aebx,左右同时去对数得到: l n y = l n a + b x lny=lna+bx lny=lna+bx
基本概念:规划中的变量(全部或部分)限制为整数,称为整数规划。
基本概念:决策变量仅取值0或1的一类特殊的整数规划。
M a x ( M i n ) z = c 1 x 1 + c 2 x 2 + . . . + c n x n Max(Min)z=c_1x_1+c_2x_2+...+c_nx_n Max(Min)z=c1x1+c2x2+...+cnxn
{ a 11 x 1 + a 12 x 2 + . . . + a 1 n x n ≤ ( ≥ , = ) b 1 a 21 x 1 + a 22 x 2 + . . . + a 2 n x n ≤ ( ≥ , = ) b 2 . . . a m 1 x 1 + a m 2 x 2 + . . . + a m n x n ≤ ( ≥ , = ) b m x 1 , x 2 , . . . , x n = 0 ∣ 1 \left\{\begin{matrix} a_{11}x_{1}+a_{12}x_{2}+...+a_{1n}x_{n}\le(\ge,=)b_{1}\\ a_{21}x_{1}+a_{22}x_{2}+...+a_{2n}x_{n}\le(\ge,=)b_{2}\\ ...\\ a_{m1}x_{1}+a_{m2}x_{2}+...+a_{mn}x_{n}\le(\ge,=)b_{m}\\ x_{1},x_{2},...,x_{n}=0|1 \end{matrix} \right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧a11x1+a12x2+...+a1nxn≤(≥,=)b1a21x1+a22x2+...+a2nxn≤(≥,=)b2...am1x1+am2x2+...+amnxn≤(≥,=)bmx1,x2,...,xn=0∣1
基本概念:研究多于一个目标函数在给定区域上的最优化。(既要成本最低,又要利润最高)
基本概念:是运筹学的一个分支,是求解决策过程最优化的数学方法(分段最优化)
基本概念:通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法。当我们应用运筹学的思想方法解决实际问题,制定发展战略和政策、进行重大问题的决策时,都必须对未来进行科学的预测。预测是根据客观事物的过去和现在的发展规律,借助于科学的方法对其未来的发展趋势和状况进行描述和分析,并形成科学的假设和判断。
灰色系统理论是研究解决灰色系统分析、建模、预测、决策和控制的理论。灰色预测是对灰色系统所做的预测。目前常用的一些预测方法(如回归分析等),需要较大的样本。若样本较小,常造成较大的误差,使预测目标失效。灰色预测模型所需建模信息少,运算方便,建模精度高,在各种预测领域都有着广泛的应用,是处理小样本预测问题的有效工具。
灰色系统:是黑箱概念的一种推广。我们把既含有已知信息又含有未知信息的系统称为灰色系统。作为两个极端,我们将信息完全未确定的系统称为黑色系统;称信息完全确定的系统为白色系统。区别白色系统与黑色系统的重要标志是系统各因素之间是否具有确定的关系。
基本概念:用观察到的反应预测对象特征 的时间序列来构造灰色序列模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
(1)由原始数据序列计算一次累加序列
(2)建立矩阵,拟合累加数据序列
(3)求逆矩阵
(4)根据方程求估计值
(5)用时间响应方程计算拟合值,再用后减运算还原
(6)精度检测与预测
基本概念:通过灰色模型预测异常值出现的时刻,预测异常值什么时候出现在特定时区内。
基本概念:通过灰色模型预测灾变值发生在一年内某一个特定的时区或季节的灾变预测。
基本概念:将原始数据作曲线,在曲线上按定值寻找该定值发生的所有时点,并以该定值为框架构成时点数列,然后建立模型预测该定值所发生的时点。
基本概念:通过对系统行为特征指标建立一组互相关联的灰色预测模型,预测系统中众多变量间的互相协调关系的变化。
一个神经网络的典型结构:
基本概念:是由具有适应性的简单神经元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界所作出的交互反应。人工神经网络具有自学习、自组织、较好的容错性和优良的非线性逼近能力。在实际应用中,80%~90%的人工神经网络模型采用误差反传算法或其变化的网络模型。
ANN能干什么:
数 学 近 似 映 射 ( 函 数 逼 近 ) { 拟 合 − − > 预 测 分 类 − − > 聚 类 分 析 数学近似映射(函数逼近) \left\{\begin{matrix} 拟合-->预测\\ 分类-->聚类分析 \end{matrix} \right. 数学近似映射(函数逼近){拟合−−>预测分类−−>聚类分析
神经元的输出与输入关系为:
n e t i = ∑ j = 1 n w i j x j − θ = ∑ j = 0 n w i j x j net_{i}=\sum_{j=1}^{n}w_{ij}x_{j}-\theta=\sum_{j=0}^{n}w_{ij}x_{j} neti=∑j=1nwijxj−θ=∑j=0nwijxj
y i = f ( n e t i ) y_{i}=f(net_{i}) yi=f(neti)
其中 n e t i net_{i} neti为净激活量, y i y_{i} yi为激活函数。
若用X表示输入向量,用W表示权重向量:
X = [ x 0 , x 1 , x 2 , . . . , x n ] , W = [ w i 0 , w i 1 , w i 2 , . . . , w i n ] T X=[x_0,x_1,x_2,...,x_n],W=[w_{i0},w_{i1},w_{i2},...,w_{in}]^T X=[x0,x1,x2,...,xn],W=[wi0,wi1,wi2,...,win]T
则 n e t i = X W , y i = f ( X W − θ ) net_i=XW,y_i=f(XW-\theta) neti=XW,yi=f(XW−θ)。
激活函数是对净激活量与输出进行映射的函数。一些常用的激活函数,由于输入数据与期望值之间可能并不是量级一样,所以需要激活。常用函数:S型函数( f ( x ) = 1 1 + e − α x f(x)=\frac{1}{1+e^{-\alpha x}} f(x)=1+e−αx1),双极S型函数( f ( x ) = 2 1 + e − α x − 1 f(x)=\frac{2}{1+e^{-\alpha x}}-1 f(x)=1+e−αx2−1)
前馈神经网络:只在训练过程会有反馈信号,而在分类过程中数据只能前向传送,直到到达输出层,层间没有向后反馈的信号。
反馈神经网络:从输出到输入具有反馈连接的神经网络,其结构比前馈神经网络要复杂得多。
自组织神经网络:通过自动寻找样本中的内在规律和本质属性,自组织,自适应地改变参数与结构。
学习:利用学习算法来调整神经元之间的连接权重,使得网络输出更加符合实际。
工作:神经元之间的连接权值不变,可作为分类器或者预测数据之用。
监督学习:将一组训练集送入网络,根据网络的实际输出与期望输出间的差别来调整连接权重。
无监督学习:抽取样本集合中蕴含的统计特性,并以神经元之间的连接权的形式存在于网络中。
基本概念:采用BP学习算法的前馈神经网络称为BP神经网络。
基本原理:利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。
(1)网络结构的确定:包含网络的拓扑结构和每个神经元相应函数的选取;
(2)权值和阈值的确定:通过学习得到,为有指导的学习,也是利用已知的一组正确输入、输出数据,调整权值和阈值使得网络输出与理想输出偏差尽量小;
(3)工作阶段:用带有确定权重和阈值的神经网络解决实际问题的过程。也叫模拟(simulate)
参数定义:假设输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元
第一步:计算各层神经元的输入和输出
第二步:利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数 (链式求导法则)
第三步:利用隐含层到输出层的连接权值、输出层的 δ o ( k ) \delta_o(k) δo(k)和隐含层的输出计算误差函数对隐含层各神经元的偏导数 δ h ( k ) \delta_h(k) δh(k)
第四步:利用输出层各神经元的 δ o ( k ) \delta_o(k) δo(k)和隐含层各神经元的输出来修正连接权值 w o h ( k ) w_{oh}(k) woh(k)
Δ w o h ( k ) = − μ ∂ e ∂ w o h = μ δ o ( k ) h o h ( k ) \Delta w_{oh}(k)=-\mu\frac{\partial e}{\partial w_{oh}}=\mu \delta_o(k)ho_h(k) Δwoh(k)=−μ∂woh∂e=μδo(k)hoh(k)
w o h N + 1 = w o h N + μ δ o ( k ) h o h ( k ) w_{oh}^{N+1}=w_{oh}^{N}+\mu \delta_o(k)ho_h(k) wohN+1=wohN+μδo(k)hoh(k)
其中 μ \mu μ是设置的学习率
第五步:利用隐含层各神经元的 δ h ( k ) \delta_h(k) δh(k)和输入层各神经元的输入修正连接权
第六步:计算全局误差
第七步:判断是神经网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回进入下一轮学习
BP神经网络的训练就是应用误差反传原理不断调整网络权重使网络模型输出值与已知的训练样本输出值之间的误差平方和达到最小或者小于某一期望值。虽然理论上早已证明:具有1个隐层(采用Sigmoid转换函数,求导容易,连续性比较好,将输出值限制在一定范围内)的BP网络可实现对任意函数的任意逼近。但遗憾的是,迄今为止还没有构造性结论,即在给定有限个(训练)样本的情况下,如何设计一个合理的BP网络模型并通过向所给的有限个样本的学习(训练)来满意地逼近样本所蕴含的规律(函数关系,不仅仅是使训练样本的误差达到很小)的问题,目前在很大程度上还需要依靠经验知识和设计者的经验。因此通过训练样本的学习(训练)建立合理的BP神经网络模型的过程,在国外被称为“艺术创造的过程”,是一个复杂而又十分繁琐和困难的过程。
训练函数
(1)生成BP网络
net=newff(PR,[S1,S2,...,SNl],{TF1,TF2,...,TFNl},BTF);
PR:由R维输入样本最小最大值构成的R*2维矩阵
[S1,S2,…,SNl]:各层的神经元个数
{TF1,TF2,…,TFNl}:各层的神经元传递函数
BTF:训练用函数的名称
(2)网络训练
net=train(net,P,T);
(3)网络仿真
Y2=sim(net,P2);
示例程序
pn=p1',tn=t1';%训练数据
[m,n]=size(t);
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%归一化
net=newff(pn,[5,1],{'tansig','purelin'},traingd');%设置网络,建立相应的BP网络
net.trainParam.show=50;%训练网络
net.trainParam.lr=0.01;
net.trainParam.epochs=1000;
net.trainParam.goal=1e-5;
[net,tr]=train(net,pn,tn);
anewn=sim(net,pt);%对BP神经网络进行仿真,测试集
figure;hold on;
plot(anewn,'b',tn,'r');
error=sum(abs(b-r))/n;%误差输出
基本概念:蒙特卡罗方法又称为统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表达这一方法的概率统计特征,故借用赌城蒙特卡罗命名。
当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率,数学期望有关的量时,通过某种试验的方法,得出该事件发生的概率,或者该随机变量若干个具体观察值的算数平均值,通过它得到问题的解。
优点:
缺点:
在使用蒙特卡罗方法时,要“扬长避短”,只对问题中难以用解析(或数值)方法处理的部分,使用蒙特卡罗方法计算,对那些能用解析(或数值)方法处理的部分,尽量使用解析方法
示例1:用蒙特卡罗方法求定积分 ∫ 0 2 e 3 x 2 d x \int_{0}^{2} e^{3x^2}dx ∫02e3x2dx
N=500;%抽样点数
x=unifrnd(0,2,N,1);%生成随机数
mean(2*exp(3*x.^2);%取期望x积分区间长度
示例:计算 ∬ D x y 2 d x d y \iint\limits_{D} xy^2dxdy D∬xy2dxdy,其中 D D D为 y = x − 2 y=x-2 y=x−2与 y 2 = x y^2=x y2=x所围,积分值是三维体积,该三维图形位于立方体区域 0 ≤ x ≤ 4 , − 1 ≤ y ≤ 2 , 0 ≤ z ≤ 16 0\le x\le 4,-1\le y\le 2,0\le z\le 16 0≤x≤4,−1≤y≤2,0≤z≤16内
data=rand(10000,3);
x=4*data(:,1);
y=-1+3*data(:,2);
z=16*data(:,3);
II=find(x>=y.^2&x<=y+2&z<=x.(y.^2));
M=length(II);
V=192*M/10000;
蒙特卡罗计算方法的性质
基本概念:将定性问题定量化处理的一种有效手段。实际生活中,面临各种各样的方案,要进行比较、判断、评价、最后做出决策。这个过程主观因素占有相当的比重给用数学方法解决问题带来不便。T.L.saaty等人20世纪七十年代提出了一种能有效解决这类问题的实用方法。
层次分析法(Analytic Hierarchy Process,AHP)这是一种定性和定量相结合、系统化的、层次化的分析方法。过去研究自然和社会现象主要有机理分析法和统计分析法两种方法,前者用经典的数学工具分析现象的因果关系,后者以随机数学为工具,通过大量的观察数据寻求规律。近年发展的系统分析又是一种方法,而层次分析法是系统分析的数学工具之一。
1.建立层次结构模型:一般分为三层,最上面为目标层,最下面为方案层,中间是准则层或指标层。
例如买钢笔是目标层,准则层是:质量、颜色、价格、外形、实用,方案层是可供选择的笔。
若上层的每个因素都支配着下一层的所有因素,或被下一层所有因素影响,称为完全层次结构,否则称为不完全层次结构。
注意:
2.构造成对比较阵:面对的决策问题:要比较 n n n 个因素 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn对目标 z z z 的影响。我们要确定它们在 z z z 中所占的比重(权重),即这 n n n 个因素对目标 z z z 的相对重要性。我们用两两比较的方法将各因素的重要性量化。(两个东西进行比较,最能比较出它们的优劣及优劣程度)
每次取两个因素 x i x_i xi 和 x j x_j xj ,用正数 a i j a_{ij} aij 表示 x i x_i xi 和 x j x_j xj 的重要性之比。全部比较结果得到的矩阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n 称为成对比较阵(也称为正互反矩阵)。显然有 a i j = 1 a j i , a i j > 0 , i , j = 1 , . . . , n a_{ij}=\frac {1}{a_{ji}},a_{ij}>0,i,j=1,...,n aij=aji1,aij>0,i,j=1,...,n
逻辑的一致性问题:如果决策人对 n n n 个因素的重要性的比较具有逻辑的绝对一致性,即 a i j ⋅ a j k = a i k , i , j , k = 1 , . . . , n a_{ij}\cdot a_{jk}=a_{ik},i,j,k=1,...,n aij⋅ajk=aik,i,j,k=1,...,n 那么我们称这样的成对比较矩阵为一致矩阵。但一般来说,我们没有办法使之完全一致。
由于客观事物的复杂性以及人们认识的多样性,特别是人的思维活动不可避免地带有主观性和片面性,构造出来的成对比较阵 A A A 常常不是一致阵。若不一致性达到很严重的程度,我们建立起来的评价体系将会是不准确的因此我们就要讨论一下我们建立的比较阵的不一致性是否在一个允许的范围内!
3.检验矩阵的一致性:矩阵理论可以证明: n n n 阶成对比较矩阵 A A A 是一致阵,当且仅当 A A A 的最大特征值 λ m a x ( A ) = n \lambda_{max}(A)=n λmax(A)=n。因此计算 A A A 的最大特征值就可以判断 A A A 是否是一致阵。如果 A A A 不是一致阵, λ m a x ( A ) > n \lambda_{max}(A)>n λmax(A)>n,而且 λ m a x ( A ) \lambda_{max}(A) λmax(A) 越大,不一致程度越严重。
一致性指标CI(Consistency Index):用来衡量矩阵的不一致程度。
C I = λ m a x − n n − 1 CI=\frac {\lambda_{max}-n}{n-1} CI=n−1λmax−n
平均随机一致性指标RI(Random Index):用排列组合的方法将所有可能的矩阵全部找到,计算出最大特征值,再取平均值得到 λ m a x ′ \lambda_{max}^{'} λmax′,我们认为若 C R = C I / R I < 1 10 CR=CI/RI<\frac{1}{10} CR=CI/RI<101 就说 A A A 的不一致性是可接受的。
R I = λ m a x ′ − n n − 1 RI=\frac {\lambda_{max}^{'}-n}{n-1} RI=n−1λmax′−n
4.计算权重向量:当我们构造出了可接受的成对比较矩阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n ,我们就可以计算层中 n n n 个元素在目标 z z z 中所占的比重,将这些比重写成向量并归一化即得到权重向量 W = ( w 1 , w 2 , . . . , w n ) T W=(w_1,w_2,...,w_n)^T W=(w1,w2,...,wn)T。
权向量的几种求法:
5.层次总排序即求各方案的综合得分:前面我们所求的都是在一层中各因素的权重,这个过程为单层次排序。不妨设准则层权向量 W = ( w 1 , w 2 , . . . , w n ) T W=(w_1,w_2,...,w_n)^T W=(w1,w2,...,wn)T,而方案层有 l l l 个方案可供选择,且每个方案的权向量分别为 β 1 , β 2 , . . . , β l \beta_1,\beta_2,...,\beta_l β1,β2,...,βl,即对于单个因素来说,不同的方案的权重(杭州,桂林,苏州就景色因素来说),与上述准则层向量区分。那么每个方案的最终目标的影响程度 ( C 1 , C 2 , . . . , C l ) T (C_1,C_2,...,C_l)^T (C1,C2,...,Cl)T 就可以通过下面的式子算出来
( C 1 , C 2 , . . . , C l ) T = ( β 1 , β 2 , . . . , β l ) l × n ⋅ ( w 1 , w 2 , . . . , w n ) T (C_1,C_2,...,C_l)^T=(\beta_1,\beta_2,...,\beta_l)_{l\times n}\cdot (w_1,w_2,...,w_n)^T (C1,C2,...,Cl)T=(β1,β2,...,βl)l×n⋅(w1,w2,...,wn)T
对于评价类问题(找指标,建方程),找指标权重,盲选->精选。
文明城市评选问题
基本概念:由Kennedy和Eberhart于1995年提出,群体迭代,粒子在解空间追随最优的粒子进行搜索。
特点
每个寻优的问题解都被想象成一只鸟,称为“粒子”。所有粒子都在一个D维空间进行搜索。所有粒子都由一个fitness function确定适应值以判断目前的位置的好坏。每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。每一个粒子还有一个速度决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。
D维空间中,有N个粒子;
粒子 i i i 位置: x i = ( x i 1 , x i 2 , . . . , x i D ) x_i=(x_{i1},x_{i2},...,x_{iD}) xi=(xi1,xi2,...,xiD),将 x i x_i xi 代入适应函数 f ( x i ) f(x_i) f(xi) 中求适应值;
粒子 i i i 速度: v i = ( v i 1 , v i 2 , . . . , v i D ) v_i=(v_{i1},v_{i2},...,v_{iD}) vi=(vi1,vi2,...,viD)
粒子 i i i 个体经历过的最好位置: p b e s t i = ( p i 1 , p i 2 , . . . , p i D ) pbest_i=(p_{i1},p_{i2},...,p_{iD}) pbesti=(pi1,pi2,...,piD)
种群所经历过的最好位置: g b e s t = ( g 1 , g 2 , . . . , g D ) gbest=(g_1,g_2,...,g_D) gbest=(g1,g2,...,gD)
通常,在第 d ( 1 ≤ d ≤ D ) d(1\le d\le D) d(1≤d≤D) 维的位置变化范围限定在 [ x m i n , d , x m a x , d ] [x_{min,d},x_{max,d}] [xmin,d,xmax,d] 内,速度变化范围限定在 [ − v m i n , d , v m a x , d ] [-v_{min,d},v_{max,d}] [−vmin,d,vmax,d] 内(即在迭代中若 v i d , x i d v_{id},x_{id} vid,xid 超出了边界值,则该维的速度被限制为该维最大速度或边界位置)
粒子 i i i 的 d d d 维速度更新公式: v i d k = w v i d k − 1 + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( g b e s t d − x i d k − 1 ) v_{id}^k=wv_{id}^{k-1}+c_1r_1(pbest_{id}-x_{id}^{k-1})+c_2r_2(gbest_d-x_{id}^{k-1}) vidk=wvidk−1+c1r1(pbestid−xidk−1)+c2r2(gbestd−xidk−1)
粒子速度更新公式包含三部分:第一部分为粒子先前的速度;第二部分为“认知”部分,表示粒子本身的思考,可理解为粒子 i i i 当前位置与自己最好位置之间的距离;第三部分为“社会”部分,表示粒子间的信息共享与合作,可理解为粒子 i i i 当前位置与群体最好位置之间的距离。
粒子 i i i 在 d d d 维位置的更新公式: x i d k = x i d k − 1 + v i d k − 1 x_{id}^k=x_{id}^{k-1}+v_{id}^{k-1} xidk=xidk−1+vidk−1
v i d k v_{id}^k vidk ——第 k k k 次迭代粒子 i i i 飞行速度矢量的第 d d d 维分量
x i d k x_{id}^k xidk ——第 k k k 次迭代粒子 i i i 位置矢量的第 d d d 维分量
c 1 , c 2 c_1,c_2 c1,c2 ——加速度常数,调节学习最大步长
r 1 , r 2 r_1,r_2 r1,r2 ——两个随机函数,取值范围[0,1],以增加搜索随机性
w w w 惯量权重,非负数,调节对解空间的搜索范围
1.Initial:初始化粒子群体(群体规模为 n n n),包括随机位置和速度
2.Evaluation:根据fitness function,评价每个粒子的适应度
3.Find the Pbest:对每个粒子,将其当前适应值与其个体历史最佳位置(pbest)对应的适应值做比较,如果当前的适应值更高,则将用当前位置更新历史最佳位置pbest
4.Find the Gbest:对每个粒子,将其当前适应值与全局最佳位置(gbest)对应的适应值做比较,如果当前的适应值更高,则将用当前粒子的位置更新全局的最佳位置gbest
5.Update the Velocitu:根据公式更新每个粒子的速度和位置
6.Ending:如果未满足结束条件,则返回步骤2,通常算法达到最大迭代次数 G m a x G_{max} Gmax 或者最佳适应值的增量小于某个给定的阈值时算法停止。
群体大小 m m m:
权重因子:惯性因子 w w w,学习因子 c 1 , c 2 c_1,c_2 c1,c2
v i d k = w v i d k − 1 + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( g b e s t d − x i d k − 1 ) v_{id}^k=wv_{id}^{k-1}+c_1r_1(pbest_{id}-x_{id}^{k-1})+c_2r_2(gbest_d-x_{id}^{k-1}) vidk=wvidk−1+c1r1(pbestid−xidk−1)+c2r2(gbestd−xidk−1)
总结:粒子群算法与现代其他优化方法相比的一个明显特色就是所需调整的参数很少。相对来说,惯性因子和邻域定义较为重要。这些为数不多的关键参数的设置却对算法的精度和效率有着显著的影响
惯性权重:1998年,Shi和Eberhart引入惯性权重 w w w,并提出动态调整惯性权重以平衡收敛和全局性的收敛速度,该算法被称为标准PSO算法
惯性权重 w w w 描述粒子上一代速度对当前代速度的影响。 w w w 值较大,全局寻优能力强,局部寻优能力弱;反之,则局部寻优能力强。当问题空间较大时,为了在搜索速度和搜索精度之间达到平衡,通常的做法是使算法在前期有较高的全局搜索能力以得到合适的种子,而在后期有较高的局部搜索能力以提高收敛精度。所以 w w w 不宜为一个固定的常数
线性递减权值: w = w m a x − ( w m a x − w m i n ) × r u n r u n m a x w=w_{max}-(w_{max}-w_{min})\times \frac{run}{run_{max}} w=wmax−(wmax−wmin)×runmaxrun
w m a x w_{max} wmax,最大惯性权重, w m i n w_{min} wmin,最小惯性权重, r u n run run,当前迭代次数, r u n m a x run_{max} runmax,算法迭代总次数
较大的 w w w 有较好的全局收敛能力,较小的 w w w 则有较强的局部收敛能力。因此,随着迭代次数的增加,惯性权重 w w w 因不断减少,从而使得粒子群算法在初期具有较强的全局收敛能力。而后期具有较强的局部收敛能力
收缩因子法:1999年,Clerc引入收缩因子以保证算法的收敛性
速度更新公式: v i d = K [ v i d + φ 1 r 1 ( p b e s t i d − x i d ) + φ 2 r 2 ( g b e s t d − x i d ) ] v_{id}=K[v_{id}+\varphi_1r_1(pbest_{id}-x_{id})+\varphi_2r_2(gbest_d-x_{id})] vid=K[vid+φ1r1(pbestid−xid)+φ2r2(gbestd−xid)]
其中,收缩因子 K K K 受 φ 1 , φ 2 \varphi_1,\varphi_2 φ1,φ2 限制的 w w w。 φ 1 , φ 2 \varphi_1,\varphi_2 φ1,φ2 是需要预先设定模型参数
K = 2 ∣ 2 − φ − φ 2 − 4 φ ∣ K=\frac{2}{\left |2-\varphi-\sqrt {\varphi^2-4\varphi} \right |} K=∣∣2−φ−φ2−4φ∣∣2, φ = φ 1 + φ 2 , φ > 4 \varphi=\varphi_1+\varphi_2 ,\varphi>4 φ=φ1+φ2,φ>4
收缩因子法控制系统行为最终收敛,且可以有效搜索不同区域,该法得到较高质量的解
基本概念:(Genetic Algorithm,GA)一种仿生全局优化算法,模拟生物的遗传进化原理(Darwin’s theory of evolution & Mendel’s law of inheritance),通过选择(Selection)、交叉(Crossover)与变异(Mutation)等操作机制,使种群中个体的适应性(Fitness)不断提高。核心思想:物竞天择,适者生存(“天”——适应度函数,Fitness Function)
优点:
缺点:
应用
个体(Individual):称 S = { 0 , 1 } l S=\left \{0,1\right \}^l S={0,1}l 为个体空间,个体空间的元素 a = a 0 a 1 . . . a l − 1 ∈ S a=a_0a_1...a_{l-1} \in S a=a0a1...al−1∈S称为个体,它是染色体带有特征的实体。分量 a j ∈ { 0 , 1 } a_j \in \left \{0,1\right \} aj∈{0,1} 称为基因,正整数 l l l 称为个体的基因长度
种群(Population):称个体空间 S S S 中 N N N 个个体组成的一个子集(允许重复)称为一个种群,记为 A = ( A 1 , A 2 , . . . , A N ) A=(A_1,A_2,...,A_N) A=(A1,A2,...,AN) ,其中 A j ( j = 1 , 2 , . . . , N ) ∈ S A_j(j=1,2,...,N) \in S Aj(j=1,2,...,N)∈S,N称为种群规模
适应度(Fitness):在研究自然界中生物遗传和进化现象时,生物学家使用适应度这个术语来度量某个物种对于生存环境的适应程度。对生存环境适应程度较高的物种将获得更多的繁殖机会,而对生存环境适应程度较低的物种,其繁殖机会相对较少,甚至逐渐灭绝。在遗传算法中,一般通过适应度函数(Fitness function)来衡量某一个适应度的高低
编码(Coding):将一个待求解的问题的实际可行解从其解空间转换到遗传算法所能处理的搜索空间(即个体空间)的过程,就称为编码
解码(Decoding):解码是将遗传算法所搜索到的最优个体的染色体转换为待求解问题的实际最优解的过程,即编码的逆过程
选择操作(Selection):根据各个个体的适应度,按照一定的规则,从第 t t t 代群体 P ( t ) P(t) P(t) 中选择出一些优良的个体遗传到下一代群体 P ( t + 1 ) P(t+1) P(t+1) 中。一般地,选择操作通过选择算子(Selection Operator)进行
交叉操作(Crossover):将群体 P ( t ) P(t) P(t) 内的各个个体随机搭配成对,对每一对个体,以某一概率(称为交叉概率,Crossover Rate)遵循某一种规则交换它们之间的部分染色体
变异操作(Mutation):对群体 P ( t ) P(t) P(t) 中的每一个个体,以某一概率(称为变异概率,Mutation Rate)改变某一个或一些基因座上的基因值为其他的等位基因