数学建模—编程手算法学习路线(自用)

在这里插入图片描述


1.评价算法

适用情景

评价、决策、评判、提出方案、选择方案、择优、后果等…
基于多个评价指标,选出最优方案

常用算法:

层次分析法

是指将与决策总是有关的元素分解成目标、准则、方案 等层次,在此基础之上进行定性和定量分析的决策方法。

比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题,但常用于计算指标的权重。
代码:层次分析法matlab实现

TOPSIS法

TOPSIS法根据有限个评价对象与理想化目标的接近程度进 行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近 于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。
TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。尝试用于大体系的综合评价
要求有理想化指标数据,如环境质量评价、医疗质量综合评价、国家综合实力评价等。

代码:带权重的TOPSIS法matlab实现

数据包络法

根据多项投入指标和多项产出指标,利用线性规划的方法,对具有可比性的同类型单位进行相对有效性评价的一种数量分析方法。
该方法一般用于评价生产效率或者综合竞争力水平等。

2.预测算法

适用情景

预测、预报、未来形势、走势、变化、效果、未来、影响等…

常用算法:

灰色预测模型

是通过少量的、不完全的信息,建立数学模型并做出预 测的一种预测方法。是处理小样本(4个就可以)预测问题的有效工具, 而对于小样本预测问题回归和神经网络的效果都不太理想。适用于小样本情况下的发展预测问题。

微分方程预测

无法直接找到原始数据之间的关系,但可以找到原始数据 变化速度之间的关系,通过公式推导转化为原始数据之间的关系。微分方 程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解 微分方程的定解问题。把形形色色的实际问题化成微分方程的定解问题 。常用于疾病的传播预测、人口数量或城市发展水平预测等。
常用微分方程模型有:传染病模型、理想火箭模型、人口模型(Malthus模型 和Logistic模型)

回归分析预测

是在分析自变量和因变量之间相关关系的基础上,建立 变量之间的回归方程,并将回归方程作为预测模型 。 适用样本数量较少,自变量与因变量间的变化具有明显的逻辑关系。
在这里插入图片描述

代码:多元线性回归matlab实现

马尔科夫预测

对事件的全面预测,不仅要能够指出事件发生的各种可 能结果,而且还必须给出每一种结果出现的概率,说明被预测的事件在预 测期内出现每一种结果的可能性程度。这就是关于事件发生的概率预测。 马尔可夫(Markov)预测法,就是一种关于事件发生的概率预测方法。它是根据事件的目前状况来预测其将来各个时刻(或时期)变动状况的一种 预测方法。马尔可夫预测法是地理预测研究中重要的预测方法之一。
主要用于市场占有率的预测和销售期望利润的预测以及其他商 业领域的预测等。

时间序列预测(必须掌握)

时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序 列的方法构 成数据分析的一个重要领域,即时间序列分析。 时间序列预测法是一种定量分析方法,它是在时间序列变量分析的基础上,运用一定的数学 方法建立预测模型,使时间趋势向外延伸,从而预测未来市场的发展变化趋势,确定变量预 测值 。
常用到的模型:移动平均法、指数平滑法、差分指数平滑法、平稳时间序列模型 :自回归 AR 、移动平均 MA 、ARMA 模型等 。
适用场景:常用在国民经济市场潜量预测、气象预报、水文预报、地震前兆预报、农作物病 虫灾害预报、环境污染控制、生态平衡、天文学和海洋学等方面。

3.分类模型

适用情景

判别、分类、分级、判定、隶属、划分、异常值、识别等…

常用算法:

朴素贝叶斯分类

决策树分类

支持向量机分类

K-means聚类

针对每个点,计算这个点距离所有中心点最近的那个中心点, 然后将这个点归为这个中心点代表的簇。一次迭代结束之后,针对每个簇类, 重新计算中心点,然后针对每个点,重新寻找距离自己最近的中心点。如此循 环,直到前后两次迭代的簇类没有变化。
适用场景:与地理位置有关的分类情形,如地物类别划分、村落划区、语言分 布位置划分等。

层次(系统)聚类

层次聚类也称系统聚类法,是根据个体间距离将个体 向上两两聚合,再将聚合的小群体两两聚合一直到聚为一个整体。计算所有个 体之间的距离,最相近距离的个体合体,不断合体。
适用场景:通常用于行政区域的划分或分级处理等,如根据城市经济指标划分 城市发展等级、根据各类综合指标进行文明城市建设评选等。

模糊聚类

(1)基于模糊关系的分类法:其中包括谱系聚类算法(又称系统聚类法)、基于等价 关系的聚类算法、基于相似关系的聚类算法和图论聚类算法等等。它是研究比较早 的一种方法,它不能适用于大数据量的情况,所以在实际中的应用并不广泛。

(2)基于目标函数的模糊聚类算法:该方法把聚类分析归结成一个带约束的非线性 规划问题,通过优化求解获得数据集的最优模糊划分和聚类。该方法设计简单、解 决问题的范围广,还可以转化为优化问题而借助经典数学的非线性规划理论求解, 并易于计算机实现。

(3)基于神经网络的模糊聚类算法:它是兴起比较晚的一种算法,主要是采用竞争 学习算法来指导网络的聚类过程。

神经网络分类

常用的分类模型为BP神经网络模型,指通过多层神经元系统建立 输入与输出间的非线性映射关系 。
适用场景:适合样本数量较多时的分类问题,常被用于图像地物类别划分。

4.优化模型

适用情景

在约束条件下,通过变量的改变,使目标函数获得更好的结果。 它可以理解为控制变量,或者是一些决定性的参数。matlab规划:求f(x)min

常用算法:

线性规划

线性规划问题是要最小化或最大化一个受限于一组有限的线性约束的线性函数(一次)。适用场景:所建立的目标函数和约束条件均为线性函数。
linprog()
代码:线性规划matlab实现

非线性规划

如果目标函数或者约束条件中至少有一个是非线性函数时,最优化问题叫做非线性规划问题 。适用场景:所建立的目标函数或约束条件存在非线性函数。
fmincon()
代码:非线性规划matlab实现

整数规划

整数规划是指规划中的变量(全部或部分)限制为整数(0-1规划)。适用场景:决策变量的取值只能为整数的情形。intlinprog()
代码:整数规划matlab实现

多目标规划

将多目标统一为最大/最小化目标函数,然后对所有目标函数的量纲进行标准化,加权求和目标函数,得到单目标目标函数,这样便转化为单目标规划问题。

代码:多目标规划matlab实现

动态规划

基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这 些子问题的解得到原问题的解。
• (1)背包问题:对于背包的类型,这边就做个简单的描述:n个物品要放 到一个背包里,背包有个总容量m,每个物品都有一个体积w[i]和价值v[i], 问如何装这些物品,使得背包里放的物品价值最大。

• (2)运输问题:给定m个资源,分配给n个部门,第i个部门获得j个资源 有个盈利值,问如何分配这m个资源能使获得的盈利最大,求最大盈利。

• (3)分割问题:给定一个具有n(n<50)个顶点(从1到n编号)的凸多边 形,每个顶点的权均已知。问如何把这个凸多边形划分成n-2个互不相交 的三角形,使得这些三角形顶点 的权的乘积之和最小。

图论模型

• 最短路模型:主要包括Dijkstra算法和Floyd算法两种,用于求解 两点间的最短距离 • 适用场景:路径规划问题,如修建道路、设定救援路线等
代码:迪杰斯特拉算法matlab实现

• 最大流模型:通常可以把这些边想象成道路,流量就是这条道 路的车流量,容量就是道路可承受的最大的车流量 • 适用场景:企业生产运输问题、交通拥堵优化问题等

• 最小生成树:图的生成树是它的一颗含有其所有顶点的无环连通子图,一 幅加权图的最小生成树(MST)是它的一颗权值(树中的所有边的权值之和) 最小的生成树
• 适用场景:道路规划、通讯网络规划、管道铺设、电线布设等

• 排队论模型:排队论也称随机服务系统理论。它涉及的是建立一些数学模 型,以对随机发生的需求提供服务的系统预测其行为;排队论主要是对服 务系统建立数学模型,研究诸如单位时间内服务系统能够服务的顾客的平 均数、顾客平均的排队时间、排队顾客的平均数等数量规律。
• 适用场景:商店购货、轮船进港、病人就诊、机器等待修理等等。

现代优化算法(启发式算法)

在可以接受的花费下,给出优化问题的可行解。

盲目搜素:蒙特卡洛或枚举法(缺点:运算量大) ,如蒙特卡洛模拟。
启发式算法:利用搜索中获取的信息,来加快搜索的策略,效率高,但容易求得局部最优解,如下面三个和梯度下降。

建模中只学下面三个就足够了

(1)遗传算法
定义:遗传算法(Genetic Algorithms,简称 GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,最终得到最优解或准最优解。它必须做以下操作:初始群体的产生、求每一个体的适应度、根据适者生存的原则选择优良个体、被选出的优良个体两两配对,通过随机交叉其染色体的基因并随机变异某些染色体的基因后生成下一代群体,按此方法使群体逐代进化,直到满足进化终止条件。

(2)模拟退火算法
定义:模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。

(3)粒子群算法
个体间信息的共享
粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO, 是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。PSO 算法属于进化算法的一种,和模拟退火算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作,它通过追随当前搜索到的最优值来寻找全局最优。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。粒子群算法是一种并行算法。
代码:粒子群算法matlab实现

5.数据预处理模型

适用情景

数据补全、异常值诊断、数据降维、剔除、选取数据、分析数据、分析走势等…
标准化:去除量纲影响
归一化:使数据分布再0-1之间

常用算法:

插值拟合

主要用于对数据的补全处理;
其中样本点较少时(泛指样本点小于30个)采用插值方法,主要有拉格朗日插值算法、牛顿插值、双线性内插和双三次插值 。
当样本点较多时(泛指样本点大于30个)则采用拟合函数。

小波分析,聚类分析(高斯混合聚类,K-均值聚类等等)

主要用于分析诊断数据异常值并进行剔除;
小波分析:适用于时域范围的大样本异常值监测
聚类分析:适用于空间分布的大样本/小样本异常值监测

主成分分析、线性判别分析、局部保留投影

主要用于多维数据的降维处理,减少数据冗余等。
代码:主成分分析matlab实现

均值、方差分析、协方差分析等统计方法

主要用于数据的截取或者特征选择等。

  • 25
    点赞
  • 303
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
提供数学建模编程指导的电子书籍 目录: 目 录 1 Matlab 软件 ........................................................................................................... 1 1.1 基本介绍................................................................................................... 1 1.1.1 软件简介............................................................................................ 1 1.1.2 工作环境介绍.................................................................................... 1 1.1.3 数据结构............................................................................................ 3 1.1.4 Matlab 语言的特点 ........................................................................... 3 1.1.5 Matlab 中的常量与特殊变量 ........................................................... 3 1.1.6 特殊符号............................................................................................ 3 1.1.7 Matlab 常用函数 ............................................................................... 4 1.2 矩阵函数................................................................................................... 7 1.2.1 构造矩阵............................................................................................ 7 1.2.2 矩阵变换操作.................................................................................... 9 1.2.3 设置输出格式.................................................................................. 10 1.3 程序设计入门......................................................................................... 10 1.3.1 变量.................................................................................................. 10 1.3.2 基本语句.......................................................................................... 11 1.3.3 分支判断语句.................................................................................. 11 1.3.4 循环语句.......................................................................................... 13 1.3.5 Matlab 程序 M 文件 ........................................................................ 13 1.3.6 函数与子函数.......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuezero_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值