数学建模常见模型总结

数学建模常见模型总结


一、插值

当已有数据量不够,需要补充,且认定已有数据可信时,通常利用函数插值方法。
常用插值方法

  1. 拉格朗日插值
  2. 分段线性插值
  3. Hermite
  4. 三次样条插值
  5. 克里金法

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 mm<n,令 f ( x ) = a 1 r 1 ( x ) + a 2 r 2 ( x ) + . . . + a m r m ( x ) f(x)=a_1r_1(x)+a_2r_2(x)+...+a_mr_m(x) f(x)=a1r1(x)+a2r2(x)+...+amrm(x),其中 a 1 a_1 a1 a 2 a_2 a2,…, a m a_m am为待定系数,点的个数 n < m nn<m时,没有唯一解,而 n > m n>m n>m时,为寻找最优解,使 n n n个点 ( x i , y i ) (x_i,y_i) (xi,yi)与曲线 y = f ( x ) y=f(x) y=f(x)的距离 δ i δ_i δi的平方和最小。

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+a2xm1+...+amx+am+1拟合,可利用已有程序:

a=polyfit(x,y,m)

输入同长度的数组x,y,拟合多项次数m
多项式在x处的值y可用以下命令计算:

y=polyval(a,x)
模型1:线性增长模型

y = a + b x y=a+bx y=a+bx

模型2:指数增长模型

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规划

基本概念:决策变量仅取值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=01

非线性规划

基本概念:研究多于一个目标函数在给定区域上的最优化。(既要成本最低,又要利润最高)

动态规划

基本概念:是运筹学的一个分支,是求解决策过程最优化的数学方法(分段最优化)

四、灰色预测模型及其应用[课程链接].

基本概念:通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法。当我们应用运筹学的思想方法解决实际问题,制定发展战略和政策、进行重大问题的决策时,都必须对未来进行科学的预测。预测是根据客观事物的过去和现在的发展规律,借助于科学的方法对其未来的发展趋势和状况进行描述和分析,并形成科学的假设和判断。

灰色系统理论是研究解决灰色系统分析、建模、预测、决策和控制的理论。灰色预测是对灰色系统所做的预测。目前常用的一些预测方法(如回归分析等),需要较大的样本。若样本较小,常造成较大的误差,使预测目标失效。灰色预测模型所需建模信息少,运算方便,建模精度高,在各种预测领域都有着广泛的应用,是处理小样本预测问题的有效工具。

灰色系统:是黑箱概念的一种推广。我们把既含有已知信息又含有未知信息的系统称为灰色系统。作为两个极端,我们将信息完全未确定的系统称为黑色系统;称信息完全确定的系统为白色系统。区别白色系统与黑色系统的重要标志是系统各因素之间是否具有确定的关系。

常用的灰色预测
1.数列预测

基本概念:用观察到的反应预测对象特征 的时间序列来构造灰色序列模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
(1)由原始数据序列计算一次累加序列
(2)建立矩阵,拟合累加数据序列
(3)求逆矩阵
(4)根据方程求估计值
(5)用时间响应方程计算拟合值,再用后减运算还原
(6)精度检测与预测

2.灾变与异常值预测

基本概念:通过灰色模型预测异常值出现的时刻,预测异常值什么时候出现在特定时区内。

3.季节灾变与异常值预测

基本概念:通过灰色模型预测灾变值发生在一年内某一个特定的时区或季节的灾变预测。

4.拓扑预测

基本概念:将原始数据作曲线,在曲线上按定值寻找该定值发生的所有时点,并以该定值为框架构成时点数列,然后建立模型预测该定值所发生的时点。

5.系统预测

基本概念:通过对系统行为特征指标建立一组互相关联的灰色预测模型,预测系统中众多变量间的互相协调关系的变化。

五、神经网络[课程链接].

一个神经网络的典型结构:

数学建模常见模型总结_第1张图片

人工神经网络(ANN)

基本概念:是由具有适应性的简单神经元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界所作出的交互反应。人工神经网络具有自学习、自组织、较好的容错性和优良的非线性逼近能力。在实际应用中,80%~90%的人工神经网络模型采用误差反传算法或其变化的网络模型。
ANN能干什么
数 学 近 似 映 射 ( 函 数 逼 近 ) { 拟 合 − − > 预 测 分 类 − − > 聚 类 分 析 数学近似映射(函数逼近) \left\{\begin{matrix} 拟合-->预测\\ 分类-->聚类分析 \end{matrix} \right. (){>>

神经元模型

数学建模常见模型总结_第2张图片
数学建模常见模型总结_第3张图片
数学建模常见模型总结_第4张图片

激活函数

神经元的输出与输入关系为:
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αx21

网络结构

前馈神经网络:只在训练过程会有反馈信号,而在分类过程中数据只能前向传送,直到到达输出层,层间没有向后反馈的信号。
反馈神经网络:从输出到输入具有反馈连接的神经网络,其结构比前馈神经网络要复杂得多。
自组织神经网络:通过自动寻找样本中的内在规律和本质属性,自组织,自适应地改变参数与结构。

工作状态

学习:利用学习算法来调整神经元之间的连接权重,使得网络输出更加符合实际。
工作:神经元之间的连接权值不变,可作为分类器或者预测数据之用。

学习方式

监督学习:将一组训练集送入网络,根据网络的实际输出与期望输出间的差别来调整连接权重。
数学建模常见模型总结_第5张图片

无监督学习:抽取样本集合中蕴含的统计特性,并以神经元之间的连接权的形式存在于网络中。
数学建模常见模型总结_第6张图片

BP神经网络(Back Propagation)

基本概念:采用BP学习算法的前馈神经网络称为BP神经网络。
数学建模常见模型总结_第7张图片
基本原理:利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。

建立和应用神经网络的步骤

(1)网络结构的确定:包含网络的拓扑结构和每个神经元相应函数的选取;
(2)权值和阈值的确定:通过学习得到,为有指导的学习,也是利用已知的一组正确输入、输出数据,调整权值和阈值使得网络输出与理想输出偏差尽量小;
(3)工作阶段:用带有确定权重和阈值的神经网络解决实际问题的过程。也叫模拟(simulate)

BP算法

参数定义:假设输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元

  • 输入向量; x = ( x 1 , x 2 , . . . , x n ) x=(x_1,x_2,...,x_n) x=(x1,x2,...,xn)
  • 隐含层输入向量; h i = ( h i 1 , h i 2 , . . . , h i n ) hi=(hi_1,hi_2,...,hi_n) hi=(hi1,hi2,...,hin)
  • 隐含层输出向量; h o = ( h o 1 , h o 2 , . . . , h o n ) ho=(ho_1,ho_2,...,ho_n) ho=(ho1,ho2,...,hon)
  • 输出层输入向量; y i = ( h i 1 , h i 2 , . . . , h i n ) yi=(hi_1,hi_2,...,hi_n) yi=(hi1,hi2,...,hin)
  • 输出层输出向量; y o = ( y o 1 , y o 2 , . . . , y o n ) yo=(yo_1,yo_2,...,yo_n) yo=(yo1,yo2,...,yon)
  • 期望输出向量; d o = ( d o 1 , d o 2 , . . . , d o n ) do=(do_1,do_2,...,do_n) do=(do1,do2,...,don)
  • 误差函数; e = 1 2 ∑ o = 1 q ( d o ( k ) − y o o ( k ) ) 2 e=\frac{1}{2} \sum_{o=1}^{q} (d_o(k)-yo_o(k))^2 e=21o=1q(do(k)yoo(k))2

第一步:计算各层神经元的输入和输出
第二步:利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数 (链式求导法则)
第三步:利用隐含层到输出层的连接权值、输出层的 δ 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)=μwohe=μδ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)和输入层各神经元的输入修正连接权
第六步:计算全局误差
第七步:判断是神经网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回进入下一轮学习

神经网络的应用
  1. 图像处理:对图像进行边缘监测,图像分割、图像压缩和图像恢复
  2. 信号处理:能分别对通讯、语音、心电和脑电信号进行处理分类;可以用于海底声呐信号的检测与分类
  3. 模式识别:已成功应用于手写字符、汽车牌照、指纹和声音识别,还可用于目标的自动识别定位,机器人传感器的图像识别以及地震信号的鉴别等
  4. 机器人控制:对机器人眼手系统位置进行协调控制,用于机械手的故障诊断及排除、智能自适应移动机器人的导航
  5. 卫生保健、医疗:比如通过训练自主组合的多层感知器可以区分正常心跳和非正常心跳,基于BP网络的波形分析和特征提取在计算机的临床诊断中应用
  6. 焊接领域:国内外在参数选择、质量检验、质量检测和实时控制方面都有研究,部分成果已得到应用
  7. 经济:能对商品价格、股票价格和企业的可信度进行短期预测
  8. 其他,数据挖掘、电力系统、交通、军事、矿业、农业和气象等方面亦有应用
训练

BP神经网络的训练就是应用误差反传原理不断调整网络权重使网络模型输出值与已知的训练样本输出值之间的误差平方和达到最小或者小于某一期望值。虽然理论上早已证明:具有1个隐层(采用Sigmoid转换函数,求导容易,连续性比较好,将输出值限制在一定范围内)的BP网络可实现对任意函数的任意逼近。但遗憾的是,迄今为止还没有构造性结论,即在给定有限个(训练)样本的情况下,如何设计一个合理的BP网络模型并通过向所给的有限个样本的学习(训练)来满意地逼近样本所蕴含的规律(函数关系,不仅仅是使训练样本的误差达到很小)的问题,目前在很大程度上还需要依靠经验知识和设计者的经验。因此通过训练样本的学习(训练)建立合理的BP神经网络模型的过程,在国外被称为“艺术创造的过程”,是一个复杂而又十分繁琐和困难的过程。

训练函数

  1. 梯度下降法:traingd
  2. 有动量的梯度下降法:traingdm
  3. 自适应lr梯度下降法:traingda
  4. 自适应lr动量梯度下降法:traingdx
  5. 弹性梯度下降法:trainrp
  6. Fletcher-Reeves共轭梯度法:traincgf
  7. Ploak-Ribiere共轭梯度法:traincgp
  8. Powell-Beale共轭梯度法:traincgb
  9. 量化共轭梯度法:trainscg
  10. 10.拟牛顿算法:trainbfg
  11. 一步正割算法:trainoss
  12. Levenberg-Marquardt:trainlm
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. 能够比较逼真地描述具有随机性质的事物的特点及物理实验过程
  2. 受几何条件的限制小
  3. 收敛速度与问题的维数无关
  4. 具有同时计算多个方案与多个未知量的能力
  5. 误差容易确定
  6. 程序结构简单,易于实现

缺点

  1. 收敛速度慢
  2. 误差具有概率性
  3. 在粒子输运问题中,计算结果与系统大小有关

在使用蒙特卡罗方法时,要“扬长避短”,只对问题中难以用解析(或数值)方法处理的部分,使用蒙特卡罗方法计算,对那些能用解析(或数值)方法处理的部分,尽量使用解析方法

示例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 Dxy2dxdy,其中 D D D y = x − 2 y=x-2 y=x2 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 0x41y20z16

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;

数学建模常见模型总结_第8张图片

蒙特卡罗计算方法的性质

  1. 蒙特卡罗计算方法具有随机性、不确定性。即每次运行结果都会不一样,因为计算机产生随机数并不是可以重现的。
  2. 蒙特卡罗计算方法具有统计稳定性。虽然每次运行产生的随机数不一样,但是随机数的概率分布是一样的,所以蒙特卡罗计算方法可以满足概率统计的稳定性。
  3. 随着随机数量的增加,蒙特卡罗计算方法所得结果会更加逼近真实值,这就是我们所讲的依概率收敛到真实值意义。

七、层次分析法

基本概念:将定性问题定量化处理的一种有效手段。实际生活中,面临各种各样的方案,要进行比较、判断、评价、最后做出决策。这个过程主观因素占有相当的比重给用数学方法解决问题带来不便。T.L.saaty等人20世纪七十年代提出了一种能有效解决这类问题的实用方法。

层次分析法(Analytic Hierarchy Process,AHP)这是一种定性和定量相结合、系统化的、层次化的分析方法。过去研究自然和社会现象主要有机理分析法统计分析法两种方法,前者用经典的数学工具分析现象的因果关系,后者以随机数学为工具,通过大量的观察数据寻求规律。近年发展的系统分析又是一种方法,而层次分析法是系统分析的数学工具之一。

层次分析法的基本步骤

1.建立层次结构模型:一般分为三层,最上面为目标层,最下面为方案层,中间是准则层指标层

例如买钢笔是目标层,准则层是:质量、颜色、价格、外形、实用,方案层是可供选择的笔。

若上层的每个因素都支配着下一层的所有因素,或被下一层所有因素影响,称为完全层次结构,否则称为不完全层次结构。

数学建模常见模型总结_第9张图片

注意

  1. 上层对下层有支配作用;
  2. 同一层因素不存在支配关系(相互独立);
  3. 每层因素一般不要超过9个;

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=aji1aij>0ij=1...n

数学建模常见模型总结_第10张图片
逻辑的一致性问题:如果决策人对 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 aijajk=aikijk=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=n1λmaxn

平均随机一致性指标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=n1λmaxn

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

权向量的几种求法

  1. 和法:取成对的比较阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n n n n 个行向量归一化后的算术平均值近似作为权向量
  2. 特征值法:求矩阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n 的最大特征值所对应的向量并进行归一化即可作为权向量(精确)
  3. 根法
  4. 最小二乘法

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

层次分析法的不足
  1. 它只能够从现有的方案中选择出较优的一个,并不能提供出一个新的或是更好的方案来。
  2. 该方法中的比较,判断以及结果都比较粗,并不适合精确计算。
  3. 建立层次结构及成对比较矩阵,人的主观因素起很大作用,这是一个无法克服的缺点。(但我们可以让多个专家来做出判断,或者以问卷调查的方式得出此矩阵)
应用

对于评价类问题(找指标,建方程),找指标权重,盲选->精选。

文明城市评选问题

八、粒子群算法

基本概念:由Kennedy和Eberhart于1995年提出,群体迭代,粒子在解空间追随最优的粒子进行搜索。

特点

  1. 简单易行
  2. 收敛速度快
  3. 设置参数少

每个寻优的问题解都被想象成一只鸟,称为“粒子”。所有粒子都在一个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(1dD) 维的位置变化范围限定在 [ 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=wvidk1+c1r1(pbestidxidk1)+c2r2(gbestdxidk1)
粒子速度更新公式包含三部分:第一部分为粒子先前的速度;第二部分为“认知”部分,表示粒子本身的思考,可理解为粒子 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=xidk1+vidk1

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 或者最佳适应值的增量小于某个给定的阈值时算法停止。

数学建模常见模型总结_第11张图片

算法构成要素

群体大小 m m m

  • m m m 是一个整形参数
  • m m m 太小,陷入局忧的可能性很大
  • m m m 很大,PSO的优化能力很好

权重因子:惯性因子 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=wvidk1+c1r1(pbestidxidk1)+c2r2(gbestdxidk1)

  • 惯性因子: w = 1 w=1 w=1,基本粒子群算法; w = 0 w=0 w=0 失去对粒子本身的速度的记忆
  • 学习因子: c 1 = 0 c_1=0 c1=0,无私型粒子群算法,“只有社会,没有自我”,迅速丧失群体多样性,易陷入局优而无法跳出
  • 学习因子: c 2 = 0 c_2=0 c2=0,自我认知型粒子群算法,“只有自我,没有社会”,完全没有信息共享的社会,导致算法收敛速度缓慢
  • c 1 , c 2 c_1,c_2 c1,c2 均不为零,称为完全型粒子群算法,完全型粒子群算法更容易保持收敛速度和搜索效果的均衡,是较好的选择
  • 最大速度:在于维护算法的探索能力与开发能力的平衡, v m v_m vm 较大时,探索能力增强,但粒子容易飞过最优解, v m v_m vm 较小时,开发能力增强,但容易陷入局部最优值解,KaTeX parse error: Expected group after '_' at position 2: v_̲ 一般设为每维变量变化范围的10%~20%
  • 邻域的拓扑结构:一种是将群体内所有个体都作为粒子的邻域,另一种是只将群体中的部分个体作为粒子的邻域,决定群体历史最优位置,由此分为全局粒子群算法局部粒子群算法
  • 全局粒子群算法:粒子自己历史最优值,粒子群体的全局最优值。收敛速度快,容易陷入局部最优
  • 局部粒子群算法:粒子自己的历史最优值,粒子邻域内粒子的最优值。收敛速度慢,很难陷入局部最优
  • 停止准则:最大可迭代步数;可接受的满意解
  • 粒子空间的初始化:较好地选择粒子的初始化空间(尽量分散的,尽量满足整个空间域的取值情况),将大大缩短收敛时间,初始化空间根据具体问题的不同而不同,也就是说,这是问题依赖的

总结:粒子群算法与现代其他优化方法相比的一个明显特色就是所需调整的参数很少。相对来说,惯性因子和邻域定义较为重要。这些为数不多的关键参数的设置却对算法的精度和效率有着显著的影响

改进

惯性权重: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(wmaxwmin)×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(pbestidxid)+φ2r2(gbestdxid)]

其中,收缩因子 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φφ24φ 2 φ = φ 1 + φ 2 , φ > 4 \varphi=\varphi_1+\varphi_2 ,\varphi>4 φ=φ1+φ2φ>4

收缩因子法控制系统行为最终收敛,且可以有效搜索不同区域,该法得到较高质量的解

九、遗传算法

1.遗传算法概述

基本概念:(Genetic Algorithm,GA)一种仿生全局优化算法,模拟生物的遗传进化原理(Darwin’s theory of evolution & Mendel’s law of inheritance),通过选择(Selection)、交叉(Crossover)与变异(Mutation)等操作机制,使种群中个体的适应性(Fitness)不断提高。核心思想:物竞天择,适者生存(“天”——适应度函数,Fitness Function)

优点

  1. 良好的并行性(操作对象是一组可行解;搜索轨道有多条)
  2. 强大的通用性(只需要利用目标的取值信息,无需梯度等高价值信息)
  3. 良好的全局优化和鲁棒性
  4. 良好的可操作性

缺点

  1. 未成熟收敛问题
  2. 收敛速度较慢,算法实时性欠佳

应用

  • 函数优化(经典应用)
  • 组合优化(旅行商问题——已成为衡量算法优劣的标准、背包问题、装箱问题等)
  • 生产调度问题
  • 自动控制(如航空控制系统的优化设计、模糊控制器优化设计和在线修改隶属度函数、人工神经网络结构优化和调整人工神经网络连接权等优化问题)
  • 机器人智能控制(如移动机器人路径规划、关节机器人运动轨迹规划、机器人逆运动学求解等)
  • 图像处理与模式识别(如图像恢复、图像边缘特征提取、几何形状识别等)
  • 机器学习(将GA用于知识获取,构建基于GA的机器学习系统)
  • 此外,遗传算法在人工生命、遗传程序设计、社会和经济领域等方面的应用尽管不是很成熟,但还是取得了一定的成功。在日后,必定有更深入的发展
2.标准遗传算法

个体(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...al1S称为个体,它是染色体带有特征的实体。分量 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)改变某一个或一些基因座上的基因值为其他的等位基因

步骤
数学建模常见模型总结_第12张图片

  1. 选择编码策略,把参数集合(可行解集合)转换染色体结构空间;
  2. 定义适应度函数,便于计算适应值;
  3. 确定遗传策略,包括选择群体的大小,选择、交叉、变异方法以及确定交叉概率、变异概率等遗传参数;
  4. 随机产生初始化群体;
  5. 计算群体中个体或染色体解码后的适应值;
  6. 按照遗传策略,运用选择、交叉和变异算子作用于群体,形成下一代群体;
  7. 判断群体性能是否满足某一指标,或者已完成预定的迭代次数,不满足则返回第五步,或者修改遗传策略再返回第六步
3.遗传算法简单举例

4.遗传算法求解TSP问题

5.遗传算法优化神经网络

6.遗传算法的实现






你可能感兴趣的:(算法,数学建模)