1、数学建模中的常用算法,一、数学建模竞赛中的算法,93A 非线性交调的频率设计: 拟合、规划 93B 足球队排名次: 矩阵论、图论、层次分析法、整数规划 94A 逢山开路: 图论、插值、动态规划 94B 锁具装箱问题: 图论、组合数学 95A 飞行管理问题: 非线性规划、线性规划 95B 天车与冶炼炉的作业调度: 非线性规划、动态规划、层次分析法、PETRI方法、图论方法、排队论方法,96A 最优捕鱼策略:微分方程、积分、非线性规划 96B 节水洗衣机:非线性规划 97A 零件参数设计:微积分、非线性规划、随机模拟 97B 截断切割:组合优化、几何变换、枚举、蒙特卡罗、递归、最短路,一、数学建模
2、竞赛中的算法,98A 投资收益与风险:线性规划、非线性规划 98B 灾情巡视:最小生成树、Hamilton圈、旅行商问题 99A 自动化车床:积分、概率分布、随机模拟、分布拟合度检验 99B 钻井布局:几何变换、枚举、最大完全子图、混合整数规划,一、数学建模竞赛中的算法,00A DNA分类:神经网络、最小二乘拟合、统计分类 00B 管道订购:最短路、二次规划 01A 血管的三维重建:数据挖掘、曲面重建与拟合 01B 公交车调度:非线性规划 02A 车灯光源优化设计:最优化 02B 彩票中的数学:概率与优化,一、数学建模竞赛中的算法,03A SARS:微分方程、最小二乘拟合、插值 03B 露天矿
3、产车辆安排:组合优化 04A 奥运场馆商业网点:数据挖掘、规划 04B 电力市场输电管理:非线性规划 05A 长江水质预测:灰色系统、回归分析 05B DVD在线租赁:规划、模拟、网格法,一、数学建模竞赛中的算法,06A 出版社资源配置:微分方程、最小二乘拟合、插值 06B 艾滋病疗法:统计、回归 07A 人口增长:微分方程 07B 乘公交看奥运:多目标优化 08A 数码相机定位:计算机模拟、图像处理 08B 高等教育收费:优化,一、数学建模竞赛中的算法,MATLAB SAS Maple SPSS Mathematica C&C+ Lindo Fortran Lingo Pascal,一、数学
4、建模竞赛中的算法,二、数学建模应掌握的十类算法,1. 蒙特卡罗方法(Monte-Carlo方法, MC) 该算法又称计算机随机性模拟方法,也称统计试验方法。这一方法源于美国在第一次世界大战进行的研制原子弹的“曼哈顿计划”。该计划的主持人之一、数学家冯诺伊曼用驰名世界的赌城摩纳哥的Monte Carlo来命名这种方法。MC方法是一种基于“随机数”的计算方法,能够比较逼真地描述事物的特点及物理实验过程,解决一些数值方法难以解决的问题。MC方法的雏型可以追溯到十九世纪后期的蒲丰(Buffon) 随机投针试验,即著名的蒲丰问题。MC方法通过计算机仿真(模拟)解决问题,同时也可以通过模拟来检验自己模型的
5、正确性,几乎是比赛时必用的方法。,97年的A题,每个零件都有自己的标定值,也都有自己的容差等 级,而求解最优的组合方案将要面对着的是一个极其复杂的公式 和108种容差选取方案,根本不可能去求解析解,那如何去找到 最优的方案呢?随机性模拟搜索最优方案就是其中的一种方法, 在每个零件可行的区间中按照正态分布随机的选取一个标定值和 选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大 量的方案,从中选取一个最佳的。 02年的B题,关于彩票第二问,要求设计一种更好的方案, 首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一 个模型进行求解,只能靠随机仿真模拟。,二、数学建模应掌握的十类算法,2
6、. 数据拟合、参数估计、插值等数据处理算法 比赛中通常会遇到大量的数据需要处理,而处理数据的关 键就在于这些算法,通常使用MATLAB 作为工具。与图形 处理有关的问题很多与拟合有关系。 98 年美国赛A 题,生物组织切片的三维插值处理。 94 年A 题逢山开路,山体海拔高度的插值计算。 此类问题在MATLAB中有很多函数可以调用,只有熟悉 MATLAB,这些方法才能用好。,二、数学建模应掌握的十类算法,3. 规划类问题算法 此类问题主要有线性规划、整数规划、多元规划、二次 规划等。竞赛中很多问题都和数学规划有关,可以说不 少的模型都可以归结为一组不等式作为约束条件、几个 函数表达式作为目标函
7、数的问题,遇到这类问题,求解 就是关键了。 98年B 题,用很多不等式完全可以把问题刻画清楚。 因此列举出规划后用Lindo、Lingo 等软件来进行解决比 较方便,所以还需要熟悉这两个软件。,二、数学建模应掌握的十类算法,4. 图论问题 这类问题算法有很多,包括:Dijkstra、Floyd、Prim、 Bellman-Ford,最大流,二分匹配等问题。 98 年B 题、00年B 题、95 年锁具装箱等问题 体现了图论问题的重要性。,二、数学建模应掌握的十类算法,5. 计算机算法设计中的问题 计算机算法设计包括很多内容:动态规划、回溯搜索、 分治算法、分枝定界等计算机算法. 92 年B 题用
8、分枝定界法 97 年B 题是典型的动态规划问题 98 年B 题体现了分治算法 这方面问题和ACM 程序设计竞赛中的问题类似,可看一 下与计算机算法有关的书。,二、数学建模应掌握的十类算法,6. 最优化理论的三大非经典算法: 模拟退火法(SA)、神经网络(NN)、遗传算法(GA) 近几年的赛题越来越复杂,很多问题没有什么很好的模型可以借鉴, 于是这三类算法很多时候可以派上用场。 97年A 题用模拟退火算法 00年B 题用神经网络分类算法 01年B 题这种难题也可以使用神经网络 美国89年A 题也和BP 算法有关系,当时是86年刚提出BP算法, 89年就考了,说明赛题可能是当今前沿科技的抽象体现。
9、美国03年 B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。,二、数学建模应掌握的十类算法,7. 网格算法和穷举算法 网格算法和穷举法一样,只是网格法是连续问题的穷举。 比如要求在N 个变量情况下的最优化问题,那么对这些变 量可取的空间进行采点,比如在a b 区间内取M +1 个点, 就是a,a+(b-a)/M,a+2(b-a)/M,b。那么这样循环就 需要进行(M + 1)N 次运算,所以计算量很大。 97 年A 题、99 年B 题都可以用网格法搜索 这种方法最好在运算速度较快的计算机中进行,还有要用 高级语言来做,最好不要用MATLAB 做网格,否则会算很久的。,二、数学建模
10、应掌握的十类算法,8. 连续问题离散化的方法 很多问题都是实际来的,数据可以是连续的,而计算机 只能处理离散的数据,因此需要将连续问题进行离散化 处理后再用计算机求解。比如差分代替微分、求和代替 积分等思想都是把连续问题离散化的常用方法。,二、数学建模应掌握的十类算法,9. 数值分析方法 数值分析研究各种求解数学问题的数值计算方法,特别 是适合于计算机实现的方法与算法。它的主要内容包括 函数的数值逼近、数值微分与数值积分、非线性方程的 数值解法、数值代数、常微分方程数值解等。数值分析 是计算数学的一个重要分支,把理论与计算紧密结合,是 现代科学计算的基础。MATLAB等数学软件中已经有很 多数值分析的函数可以直接调用。,二、数学建模应掌握的十类算法,10.图象处理算法 赛题中有一类问题与图形有关,即使问题与图形无 关,论文中也会需要图片来说明问题,这些图形如 何展示以及如何处理就是需要解决的问题,通常使 用MATLAB 进行处理。 01年A 题中需要你会读BMP图象 98年美国A 题需要你知道三维插值计算 03年B 题要求更高,不但需要编程计算还要进行处理 数模论文中也有很多图片需要展示,解决这类问题要熟 悉MATLAB图形图像工具箱。,二、数学建模应掌握的十类算法,