数学建模常用算法总结
一、数学建模十大常见类型及算法
1 、蒙特卡罗算法
该算法又称随机性模拟算法,它使用随机数来进行场景的模拟或者过程的仿真,其思想核心就是通过模拟出来的大量样本集或者随机过程去近似我们想要研究的实际问题对象,这是一类非常重要的数值计算方法,通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,比较好用的算法。
2 、数据拟合、参数估计、插值等数据处理算法
比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用 Matlab 作为工具,可以通过诸如采样、实验等方法获得若干离散的数据,根据这些数据,我们往往希望得到一个连续的函数(也就是曲线)或者更加密集的离散方程与已知数据相吻合,通过分析已有的数据对问题有个大致的了解,最好可以探究出数据间的规律。
参数估计(点估计、极大似然估计、Bayes估计)
假设检验(U-检验、T-检验、卡方检验、F-检验、最优性检验、分布拟合检验)
方差分析(单因素、多因素、相关性检验)
经验分布函数、正交试验
3 、线性规划、整数规划、多元规划、二次规划等规划类问题
建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用 Matlab、Lingo 软件实现。
线性规划(运输问题、指派问题、对偶理论、灵敏度分析)
整数规划(分支定界、枚举试探、蒙特卡洛)
非线性规划(约束极值、无约束极值)
目标规划(单目标、多目标)
动态规划(动态、静态、线性动规、区域动规、树形动规、背包动规)
动态优化(变分法)
4 、图论算法
图几乎可以用来表现所有类型的结构或系统,从交通网络到通信网络,从下棋游戏到最优流程,从任务分配到人际交互网络,图都有广阔的用武之地。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。
最小生成树(prim算法、Kruskal算法)
最短路径(Dijkstra算法、Floyed算法(弗洛伊德算法)、Floyd-Warshall算法、Bellman-Ford算法、SPFA算法)
匹配问题(匈牙利算法)
Euler图和Hamilton图
网络流(最大流问题、最小费用最大流问题)
5 、动态规划、回溯搜索、分治算法、分支定界等计算机算法
这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中。
6 、最优化理论算法
这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用,注意这些智能算法只可以作为问题的某问的一部分进行优化使用,不可通篇采用神经网络或者一些智能算法进行建模,因为这些算法没有数学模型进行支撑,类似于黑匣子,有了输入输出就可以进行训练了,因此在数模中不宜大篇幅使用。
现代优化算法(贪婪算法、禁忌搜索、模拟退火、遗传算法、人工神经网络、蚁群算法、粒子群算法、人群搜索算法、人工免疫算法、集成算法、TSP问题、QAP问题、JSP问题)
7 、网格算法和穷举法
当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具,有时候可以得到较好的结果。
8 、一些连续离散化方法
很多问题都是从实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。
9 、数值分析算法
如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。
10 、图像处理算法
赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的这些图形如何展示,以及如何处理就是需要解决的问题,通常使用 Matlab 进行处理。
二、各类算法介绍
1 、灰色预测模型
解决预测类型题目,适合短期预测,数据量不大的预测问题,由于属于灰箱模型,一般比赛期间不优先使用。满足两个条件可用:
①数据样本点个数 6 个以上
②数据呈现指数或曲线的形式,数据波动不大
2 、微分方程模型
微分方程模型是方程类模型中最常见的一种算法。微分方程在现代科学的每一个领域都有广泛的应用,比如力学、运动学、电学、经济学、生物学、自动控制、化学等等,都可以看到大量利用微分方程表示的事物变化规律,这也体现了微分方程的重要性。近几年比赛都有体现,但其中的要求,不言而喻,学习过程中无法直接找到原始数据之间的关系,但可找到原始数据变化速度之间的关系,通过公式推导转化为原始数据的关系,如果遇到时变的问题,能够建立出微分方程可以为论文增色不少,微分方程的数学模型是能较好地体现数学建模的本质。
微分方程(Malthus人口模型、Logistic模型、战争模型)
稳定状态模型(Volterra 模型)
常微分方程的解法(离散化、Euler方法、Runge—Kutta方法、线性多步法)
差分方程(蛛网模型、遗传模型)
偏微分方程数值解(定解问题、差分解法、有限元分析)
3 、回归分析预测
求一个因变量与若干自变量之间的关系,若自变量变化后,求因变量如何变化; 样本点的个数有要求:
①自变量之间协方差比较小,最好趋近于 0,自变量间的相关性小;
②样本点的个数 n>3k+1,k 为预测个数;
一般常见的回归算法:(一元线性回归、多元线性回归MLR、非线性回归、多元逐步回归MSR、主元回归法PCR、部分最小二乘回归法PLSR)
4、 马尔可夫预测
马尔可夫(Markov)预测法,就是一种关于事件发生的概率预测方法。它是根据事件的目前状况来预测其将来各个时刻(或时期)变动状况的一种预测方法。一个序列之间没有信息的传递,前后没联系,数据与数据之间随机性强,相互不影响;例如今天的温度与昨天、后天没有直接联系,预测后天温度高、中、低的概率,只能得到概率,其算法本身也主要针对的是概率预测,如果问题中出现了概率,则可以考虑用马尔可夫预测。
5、时间序列预测
时间序列是按照一定的时间间隔排列的一组数据,其时间间隔可以是任意的时间单位,如小时、日、周月等。通过对这些时间序列的分析,从中发现和揭示现象发展变化的规律,并将这些知识和信息用于预测。比如销售量是上升还是下降,销售量是否与季节有关,是否可以通过现有的数据预测未来一年的销售额是多少等。对于时间序列的预测,由于很难确定它与其他变量之间的关系,这时就不能用回归去预测,而应使用时间序列方法进行预测。预测的是数据总体的变化趋势,有一、二、三次指数平滑法(简单),AR,MA,ARMA,ARIMA,在数学建模大数据题中大部分赛题都会涉及到时序预测的问题,因此掌握住时序预测是必要的,当然时序预测入门需要花费一番功夫。
6、小波分析预测
数据无规律,海量数据,将波进行分离,分离出周期数据、规律性数据;其预测主要依靠小波基函数,不同的数据需要不同的小波基函数。小波分析主要用于无序的数据,在分析前需要借用小波函数对其进行降噪,而采用小波分析可以借助matlab中的小波工具箱。
7、 神经网络
有关神经网络的算法就很多了,机器学习发展至今,也有很多成熟的神经网络可以用来分析,大量的数据,不需要模型,只需要输入和输出,黑箱处理,虽然神经网络算法很方便,但是建议作为检验的办法,不过可以和其他方法进行组合或改进,可以拿来做评价和分类。
8、 混沌序列预测
由于混沌现象是介于确定和随机之间的一种不规则运动,是一种由确定的非线性动力学系统生成的复杂行为,适用于大数据预测,其难点在于时延和维数的计算。混沌时间序列预测,是一种新型的非线性系统预测理论,研究如何由时间序列通过相空间重构,从另一个维度和视角来辨识系统,挖掘系统中蕴藏的规律,并预测系统的未来走势,而忽略因变量背后众多影响因素和复杂的影响机理,省却了大量繁琐的工作,非常适合于那些总体呈现确定性,但又具有某种程度随机性的复杂系统。在采用混沌序列预测时一定要分析数据是否符合混沌的特征,混沌对于大学生来说入门较为困难,如果学有余力的情况下,掌握这种预测算法在建模中将会脱颖而出。
9、 插值与拟合
拟合以及插值还有逼近是数值分析的三大基础工具,通俗意义上它们的区别在于:拟合是已知点列,从整体上靠近它们;插值是已知点列并且完全经过点列;逼近是已知曲线,或者点列,通过逼近使得构造的函数无限靠近它们。利用插值和拟合可以大致明白数据的变化规律,也可以补全一些缺失值。
插值与拟合有:Lagrange插值、Newton插值、Hermite插值、三次样条插值、线性最小二乘法等
10、 模糊综合评判
不建议单独使用,评价一个对象优、良、中、差等层次评价,评价一个学校等,不能排序
11、 层次分析法(AHP)
不建议单独使用作决策,去哪旅游,通过指标,综合考虑作决策
12、 数据包络(DEA )分析法
综合评价类优化问题,对各省发展状况进行评判,多输入多输出,数据量大,针对一个优化系统,得到的结果较为客观。这个方法特别适用于多输入多输出的大数据评价类问题中,效果特别好。
13、 秩和比综合评价法和熵权法
秩和比综合评价法是评价各个对象并排序,但要求指标间关联性不强;熵权法是根据各指标数据变化的相互影响,来进行赋权。两者在对指标处理的方法类似。
14、 优劣解距离法(TOPSIS 法)
其基本原理,是通过检测评价对象与最优解、最劣解的距离来进行排序,若评价对象最靠近最优解同时又最远离最劣解,则为最好;否则为最差。其中最优解的各指标值都达到各评价指标的最优值。最劣解的各指标值都达到各评价指标的最差值。
15、投影寻踪综合评价法
可揉和多种算法,比如遗传算法、模拟退火等,将各指标数据的特征提取出来,用一个特征值来反映总体情况;相当于高维投影之低维,与支持向量机相反。该方法做评价比一般的方法好。
16、方差分析、协方差分析等
方差分析:看几类数据之间有无差异,差异性影响,例如:元素对麦子的产量有无影响,差异量的多少
协方差分析:有几个因素,我们只考虑一个因素对问题的影响,忽略其他因素,但注意初始数据的量纲及初始情况。
此外还有灵敏度分析,稳定性分析
17、线性规划、整数规划、0-1 规划
模型建立比较简单,可以用 lingo 解决,但也可以套用智能优化算法来寻最优解。
18、非线性规划与智能优化算法
非线性规划包括:无约束问题、约束极值问题
智能优化算法包括:模拟退火算法、遗传算法、改进的遗传算法、禁忌搜索算法、神经网络、粒子群、蚁群等
其他规划如:多目标规划和目标规划及动态规划等
19、复杂网络优化
离散数学中经典的知识点——图论,图论可以参考前面的部分算法,图论的难点主要是编程。
20、排队论与计算机仿真
排队论研究的内容有 3 个方面:统计推断,根据资料建立模型;系统的性态,即和排队有关的数量指标的概率规律性;系统的优化问题。其目的是正确设计和有效运行各个服务系统,使之发挥最佳效益。计算机仿真可通过元胞自动机实现,但元胞自动机对编程能来要求较高,一般需要证明其机理符合实际情况,不能作为单独使用。
21 、图像处理
MATLAB 图像处理,针对特定类型的题目,一般和数值分析的算法有联系。例如 2013 年国赛 B 题,2014 网络赛 B 题。
22、分类算法
有些问题是需要进行分类的,因此就需要涉及到分类算法,而常用的分类算法有:
(1)、支持向量机:实现是通过某种事先选择的非线性映射(核函数)将输入向量映射到一个高维特征空间,在这个空间中构造最优分类超平面,主要用于分类。
(2)、逻辑回归:逻辑回归也称作 logistic回归分析 ,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。
(3)、决策树:可以当作一种基本的分类与回归方法,在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
(4)、神经网络,神经网络同样可以用作分类,且效果不错,神经网络的分类器种类繁多,有需求的可以去了解相关的神经网络分类算法。
(5)、随机森林:随机森林是机器学习中十分常用的算法,也是Bagging集成策略中最实用的算法之一。首先对数据集进行 随机采样 ,分别训练多个树模型,最终将其结果整合在一起即可。
23、多元分析
(1)、聚类分析:聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内相似性越大,组间差距越大,说明聚类效果越好。
(2)、因子分析:研究从变量群中提取共性因子的统计技术,这里的共性因子指的是不同变量之间内在的隐藏因子,因子分析的过程其实是寻找共性因子和个性因子并得到最优解释的过程。
(3)、主成分分析:主成分分析是因子分析处理过程的一部分,可以通过分析各指标数据的变化情况,然后将数据变化相似的指标用一种具有代表性的来代替,从而达到降维的目的。
(4)、判别分析:距离判别、Fisher判别、Bayes判别
(5)、典型相关分析
(6)、对应分析
(7)、多维标度法
(8)、偏最小二乘回归分析
24 、关联与因果
需要对数据间的变量进行典型相关分析(例:因变量组 Y1、Y2、Y3、Y4,自变量组 X1、X2、X3、X4,各自变量组相关性比较强,问哪一个因变量与哪一个自变量关系比较紧密?),通过关联分析可以对变量进行降维处理。
(1)、灰色关联分析方法
(2)、Sperman 或 kendall 等级相关分析
(3)、Person 相关(样本点的个数比较多)
(4)、Copula 相关(金融数学,概率密度)
(5)、标准化回归分析:若干自变量,一个因变量,问哪一个自变量与因变量关系比较紧密
25、量子优化算法
俗话说,遇事不决,量子力学。量子优化可与很多优化算法相结合,从而使寻优能力大大提高,并且计算速率提升了很多。这个算法过于深奥了,如果有兴趣的伙伴,可以去了解下,其主要通过编程实现,要求编程能力较好。
模糊逼近、动态加权、ES、DWRR、序列分析、主成分分析、因子分析、聚类分析、灰色关联分析法、数据包络分析法(DEA)
26、图形类(重点)
在论文写作过程中,一定要会画图,好的图形能够为论文增色不少,因为图是最能只管体现模型结果的东西,因此需要尽可能地掌握以下图。
算法流程图、条形图、直方图、散点图、饼图、折线图、茎叶图、箱线图、P_P图、Q_Q图、Venn图、矢量图、误差分析图、概率分布图、等高线曲面图、思维导图
这些图可以借助matlab、python、SPSS、Visio等软件进行绘制。
27、数据建模中的机器学习方法
云模型、Logistic回归、主成分分析、支持向量机(SVM)、K-均值(K-Means)、朴素Bayes判别法、决策树方法、正则化方法、排队论、博弈论、贮存伦、概率模型、马氏链模型、决策论、单目标决策(不确定型决策、风险决策、灵敏度分析)、多目标决策(分层序列法、多目标线性规划、层次分析法)等等,这个方法与上述方法存在交叉,不过都可以适当地了解。
三、总结
数学建模是一项较为辛苦的比赛,期间需要准备大量的知识,过程也很累,但是贵在坚持,当你真正坚持下来的话,回顾一路走来的历程,你就会发现自己收获的不仅仅是成绩与荣誉,而是牢记于心的知识,坚持不下去的时候多想想:会苦的人苦一阵子,不会苦的人苦一辈子。加油,希望总结的文章能有所帮助,后续还会更新其他知识的!