QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2671|回复: 0
打印 上一主题 下一主题

还在为数学建模的事发愁?带你一起来看看数模竞赛中必备的经典算法

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2021-7-9 17:26 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    还在为数学建模的事发愁?带你一起来看看数模竞赛中必备的经典算法
    8 x7 W& [( g- t9 N( r& |" P/ N: Q
      C. @; ^4 ^7 T# C前言* J. _5 }/ l* h3 n- j
    数学建模比赛是本科生和研究生阶段最重要的比赛之一,包括全国大学生数学建模竞赛(俗称“国赛”)和美国大学生数学建模竞赛(俗称“美赛”)。在这些比赛中取得好成绩,不仅有助于保研、有助于找工作,更重要的是形成科学的思维模式。以下是博主精心整理的两个matlab专栏,包含入门到精通及实战内容,需要的小伙伴可根据自己需求自行订阅。
    & C5 i) g. |" h4 O/ N2 S5 _4 l
    7 Z# C% N0 J2 Q" B$ H/ b

    ! r& l1 x  u5 k7 Y( \/ s" w( eMATLAB-30天带你从入门到精通$ p" N( _* F, f5 D4 g3 g

    9 @! b5 C1 X2 Z. z0 J- x7 c

    4 C* o* p$ ?+ R" ?. }6 T1 w# Ihttps://blog.csdn.net/wenyusuran/category_10614422.html/ F" m6 z9 z9 W: n" }+ g0 W
    / G6 j8 p4 W; D1 r
    " Y8 w* f+ m( T# {5 j
    MATLAB深入理解高级教程(附源码)
    0 P5 ~% i+ i3 y& p* ^! x: [1 e; e! Y1 t0 H% |. T( S/ P% ^
    ! f% K! ?1 P3 r! r& x6 p" G
    https://blog.csdn.net/wenyusuran/category_2239265.html8 C+ y/ R: I9 j9 v6 v; ^
      X1 D7 l6 F9 [8 `  l8 z% B
    8 d8 J0 F+ X' J7 c5 v7 p
    在博主的资源中也有各种算法的应用实例源代码,需要的小伙伴自取哟。
    9 T1 I7 C: I1 t2 g- {
    9 G- q% c3 l  U  h' r& B- T

    . S# u# ]1 `& q7 J' ^$ ^ 7 f5 r, X" |' o6 L
    9 ^. k1 c) F2 d- r% ?, `( A
    . V5 h0 I0 G' @5 Y6 i* }3 O
    - T9 J3 Q- X9 y' x$ B8 ^

    / i8 W2 L) I8 ~! T* \! I5 Q5 f
    / m* X4 |# L0 z+ |2 v
    ' r3 Q8 `' X+ F
    6 N$ `) m7 d5 h) I' }9 Z: h! j
    + o( }' Z/ \8 l. t( H. C2 T
    : S" {! `, I# @! y/ e- t* f$ J: F" Y* @& ~! n
    01  蒙特卡罗算法
    7 j. E2 ~) ~6 p" j1946 年,美国拉斯阿莫斯国家实验室的三位科学家 JohnvonNeumann, Stan Ulam和 Nick Metropolis 共同发明了蒙特卡罗方法。& I7 u' y, K: y% V. n, z
    7 {$ w% \! K5 n! R; Y
    ; T  @/ G9 s, x9 o& p
    蒙特卡罗方法(Monte Carlo method),又称随机抽样或统计模拟方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。此方法使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
    6 k0 ~( B  ]; l( ^$ W/ l% y
    2 H- k3 w; W- F( U
    9 V1 ?! g( `/ _* [- p
    由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。
    $ m: j/ O* W) u( o7 ^) b- M5 N1 _! w% d& [% a6 k& h

    ' q5 ~' G8 m5 @/ c7 t* p蒙特卡罗方法的基本原理及思想如下:8 S# @3 T* D: \( s+ u* K! I# G5 Q  l

    ( \: T. J- t) L

    ; K- ~( R: [. R: n! Z7 q当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。# R% G% n8 N. n4 d) O8 e9 L

    , T* d3 G. c$ ?

    " \* G1 P  I  f! A7 U8 n! E9 _4 @0 h9 W举个栗子,直观了解蒙特卡洛方法:
    4 g: Z3 g9 o2 s5 k- x/ J, }
    5 c  h: R* Q1 o. q0 v' w

    . O9 c3 f: f) i; S- C0 u假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如:积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。
    , F$ S& o- m( }3 ^  p4 m# v- E5 J0 ]0 f7 y
    7 M9 O* h1 a6 d( _
    % O" H7 B1 C$ r' z3 p
    & ^+ a' |6 e( d! O- t' l

    $ P- H; f4 o( C

    2 Y! V' u( ^3 h2 M! X( ?3 S1 b蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。  q/ i. l8 J+ X2 N& V* ?7 M4 }

    8 F* |  ~3 G) H  k# b& r4 P

    4 T% u, l. e0 T& B* |- q; T蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:
    7 _. i: t7 m! ?7 d& r; O% K8 f
    ' S9 x- S6 v' O+ e% h/ f6 e
    5 m, t- m$ X0 Z4 e9 `4 o
    a、直接追踪粒子,物理思路清晰,易于理解;! P2 a6 a2 _3 T9 b9 o: f0 d
    ) M9 d' o( \! k+ g4 H
    0 F6 [0 h9 O  z
    b、采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律;
    ( r/ `$ q1 k2 E( z
    , L) |7 h$ X8 c/ ?# }: c3 e
    ) J4 a  y+ i; J; I  |
    c、不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法/ [- Z3 c7 }9 H6 _5 N
    9 S0 L3 |' _3 Q( |6 V

    + D" S, E5 @( E9 [1 N: T& _等等6 a7 I; U( v9 |3 ]: d% }: ^) u4 b- z

    ! `0 ]) l# s! j3 |2 [9 s9 o

    0 v7 h6 F+ x  M& M* q 02  数据拟合、参数估计、插值等数据处理算法
      K! _% L4 T5 q我们通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用 Matlab 作为工具。
    & x1 S7 }6 r) x' p
    / {1 t9 a- o' {2 y
    2 P( l% C; ~( k8 d
    数据拟合在数学建模比赛中中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是 98 年数学建模美国赛 A 题,生物组织切片的三维插值处理,94 年 A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理。
    1 P2 ~  N& ?; |5 r3 _- H0 [5 [. Y8 o7 Z

    3 h) G) a5 ?5 D" N* p" |" m8 r/ z% r( m5 \1 ]6 Q: f: S0 c9 V6 i6 ?
    ! z7 t, t. `0 |" L% P- P' J6 j  A6 z
      Q; ]7 H& w5 K, ]& x7 O
    , G% q/ b8 M% c
    此类问题在 MATLAB 中有很多现成的函数可以调用,熟悉 MATLAB,这些方法都能游刃有余的用好。: ]5 l+ h3 G' S

      n; e- C/ d. a
    2 p+ m/ @1 B1 v3 n. z3 `) _4 k
    03 线性规划、整数规划、多元规划、二次规划等规划类问题
    5 F0 Y2 a9 p) K# E  l数学建模竞赛中很多问题都和数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题。* |+ o. M* {0 }5 ^3 M
    ( S' [( l6 N7 `4 `1 \" Q
    0 q7 O2 L: F& n
    遇到这类问题,求解就是关键了,比如 98 年 B 题,用很多不等式完全可以把问题刻画清楚,因此列举出规划后用 Lindo、Lingo 等软件来进行解决比较方便,所以还需要熟悉这两个软件。9 o  l9 x7 ?- i; G# I
    # N* c7 a5 F. ^- i

    6 }+ u3 }! q1 E+ X 04  图论算法
    6 h8 b8 F4 Q7 W- T" x7 E这类问题算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等问题。
    ; K" J) p# _' ?3 x4 S" z2 ~3 O% M3 v* m3 m; a3 z- q

    ' Y! H9 A7 A3 `. u, I2 t关于此类图论算法,可参考 IntroductiontoAlgorithms--算法导论,关于图算法的第22章-第26章。
    + J# H, B; s. T# }6 `7 u8 b
    7 S( M5 E% F/ }
    - y' L: c1 k; V* @- z( V

      n4 e6 _5 G, f7 U
    - W! ^, J! |; F) G7 \. l

    : Q% N- y( c7 M# @
    : ?2 b8 `" d# u+ ]
    05  动态规划、回溯搜索、分治算法、分支定界等计算机算法
    + f& L$ ]5 z5 d  ]在数学建模竞赛中,如:92 年 B 题用分枝定界法,97年 B 题是典型的动态规划问题,此外 98 年 B 题体现了分治算法。. X; o6 \  c+ \# u3 t
    : ?- k6 I% B" F: U

    7 j, W/ Q* l. Q
    % d& g7 @8 M' H/ D
    - Y9 G/ T* _1 h5 E1 q8 z* p- r

    ; g; \( k3 Z) S

    " z! k; I8 K. Z) G3 u这方面问题和 ACM 程序设计竞赛中的问题类似,推荐看一下算法导论,与《计算机算法设计与分析》(电子工业出版社)等与计算机算法有关的书。
    0 ~! E9 z' N9 E+ m; Z+ n3 H+ b" L
    - h, u- J0 ^& C6 N

    2 w  e: h! T" C  ]' l6 v 06  最优化理论的三大经典算法:模拟退火法、神经网络、遗传算法* y% [2 z) O* ~& A$ k7 [
    这十几年来最优化理论有了飞速发展,模拟退火法、神经网络、遗传算法这三类算法发展很快。* I( N1 Q3 z; Z6 p9 G( n
    . }" ]5 K  o! L

    7 y2 j8 h' X1 K& C9 f在数学建模竞赛中:比如 97 年 A 题的模拟退火算法,00 年 B 题的神经网络分类算法,01 年 B 题这种难题也可以使用神经网络。5 U4 U' c9 o7 m. s0 `/ j' w$ o2 s

    6 G) P1 D5 C# }0 V3 n9 y

    6 g5 L* t" p5 z* H- J0 o/ [还有美国竞赛 89 年 A 题也和 BP 算法有关系,当时是 86 年刚提出 BP 算法,89 年就考了,说明赛题可能是当今前沿科技的抽象体现。
    + F" e/ ?9 j; j4 C9 J2 P) {- c: `# w6 V" u5 T7 |
    1 K- N7 Y/ q( O( N. E* e8 B, @
    03 年 B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。
    & S: C6 u2 h$ _. D' P5 T, j3 A, s! j  ]3 J
    7 P8 `8 D3 l- j' p

    ( _5 V/ t9 C8 Q8 A# s6 V
    . H8 l- t: [3 k/ [/ I6 T- q- D
    0 T$ Q2 u7 Q4 Q" j

    % k) p7 i2 ]& P7 P/ y
    ( h1 `5 h( J- Q1 h1 Y, o8 B( D2 B3 o/ I, T# I

    " g! K1 z9 }( _ 07  网格算法和穷举法. M! l9 S! }# g" U2 I9 t3 ^0 ?
    网格算法和穷举法一样,只是网格法是连续问题的穷举。8 l* L; j8 t& I9 I! _

    8 x7 ~) s- T# T$ z2 d+ v
    8 }3 B9 Z& {) i' d" E
    比如要求在 N 个变量情况下的最优化问题,那么对这些变量可取的空间进行采点,比如在 [a;b] 区间内取 M+1 个点,那么这样循环就需要进行 (M+1)N 次运算,所以计算量很大。
    ; a( {# i" N, P% _% i) s% R- ^' T. v1 O; R6 j9 R

    $ _$ x! G  p2 a' R/ b7 l9 C在数学建模竞赛中:比如 97 年 A 题、99 年 B 题都可以用网格法搜索,这种方法最好在运算速度较快的计算机中进行,还有要用高级语言来做,最好不要用MATLAB 做网格,否则会算很久。* f) u* n; b% J& l+ L) L
    : T# |) P, h6 _* E: |; f- h
    ; S! n0 K  _* w7 s# j! M. f
    穷举法大家都熟悉,自不用多说了。
    ) L6 T4 {* e+ @7 U( J8 c' L( g
    # ]9 s+ z5 e5 A+ K+ o1 e, c! Q

    ( ^) w8 n9 u& M1 F) \ 08 一些连续离散化方法
      J& c1 S5 Y1 c! i- V+ c大部分物理问题的编程解决,都和这种方法有一定的联系。物理问题是反映我们生活在一个连续的世界中,计算机只能处理离散的量,所以需要对连续量进行离散处理。0 P, P/ {; X. o: t" Y

    $ |( |/ \6 L( Y

    , Z7 P8 W: j# C这种方法应用很广,而且和上面的很多算法有关。事实上,网格算法、蒙特卡罗算法、模拟退火都用了这个思想。
    3 f7 j% d) J" O2 c! l
    6 H7 S* F3 q5 m. X

    6 Q0 Y9 h; v, R3 L9 @" a 09 数值分析算法; z/ P  m& }" Z0 W6 S& g) P# b4 r
    数值分析(numericalanalysis),是数学的一个分支,主要研究连续数学(区别于离散数学)问题的算法。* i, k& B# ]5 j! Z/ w
    * \6 s; p* b, l4 r: G+ M
    & m2 z) }' x/ w1 M* [
    如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。: ^, ?; \7 B+ g- _- s
    . [4 p! L2 B1 W- H/ O: G0 D

    3 p0 }' w% Z0 o' N0 E$ H. C这类算法是针对高级语言而专门设的,如果你用的是 MATLAB、Mathematica,大可不必准备,因为像数值分析中有很多函数一般的数学软件是具备的。, t$ k5 L- S8 A4 B9 P
    . @9 P6 m7 ^' z! C
    6 [3 M7 U0 W: B' e
    10  图象处理算法) S0 i0 [# i3 x9 a. s% `# A. F
    在数学建模竞赛中:比如 01 年 A 题中需要你会读 BMP 图象、美国赛 98 年 A 题需要你知道三维插值计算,03 年 B 题要求更高,不但需要编程计算还要进行处理,而数模论文中也有很多图片需要展示,因此图象处理就是关键。做好这类问题,重要的是把 MATLAB 学好,特别是图象处理的部分。
    & ^7 E2 ?# `1 Z4 @& X6 o
    & W1 z" H; d' S

    & {: Z* |1 T% |; e3 L) z3 V  M  \( }5 a1 I  T1 w
    6 {% l+ ^6 t3 G7 A- [! h
    ————————————————, }) d, `7 ~3 D* C9 g
    版权声明:本文为CSDN博主「文宇肃然」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 S! k" q+ v; ^# |! d+ a: o2 R
    原文链接:https://blog.csdn.net/wenyusuran/article/details/114093268& u( V, P$ [9 L' ~: K0 L" W" C6 m

    ' A; M& }- p% j) i3 I5 h) P
    4 p+ e$ O! F& B$ S/ p5 a2 V2 k
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-8-6 20:34 , Processed in 0.415539 second(s), 52 queries .

    回顶部