数学建模社区-数学中国

标题: ACMer数学建模Python编程起步 [打印本页]

作者: 杨利霞    时间: 2020-4-6 11:23
标题: ACMer数学建模Python编程起步
2 q' k; e9 P- j0 f, \2 p' K% L
ACMACMer数学建模Python编程起步er数学建模Python编程起) j# e6 U  h+ x/ g- j) J4 I
笔者一建模小白,同时也是一名ACMer。寒假期间学完了数学建模所需的一些编程知识,磕磕碰碰渐渐入门。在此为想要参加数学建模的ACMer分享一些经验。该文该帖系笔者原创,笔者刚入数学建模时,对于数学建模应该怎么样去编程也同样非常迷茫,在网上也没有找到相关的经验贴,故在此给大家分享几点经验。该文会长期更新,欢迎在评论区交流。$ K1 g! }5 _* Y3 K
7 g1 p, c2 j: \5 z
数学建模和ACM的区别
! v: Z# Q# R5 V8 a4 p; b& u, k- D$ B
相比于ACM,数学建模编程主要有以下几点区别:: }  s# m2 \8 [3 j
- [& C' S& o2 K* d  i! U
1.ACM的编程多是用来直接处理一些算法问题,需要对算法进行创新应用,重点在于算法;而数学建模中的编程多是用来运行算法模型以获得所需的数据,或者是画图、画表格之类的,很多算法模型都是现成的,有很多ACM中的诸如Floyd的算法已经被封装成模块。有趣的是,他们可能是以伪码表示的,并不像ACM模板,都已经写好代码了,这时,就需要各位大佬根据伪码翻译成计算机所能理解的语言。ACM重在算法,数学建模编程虽然也需要对算法模型进行创新,但更多的,重在计算,重在选择最优的模型达到最优的效果。/ }" q! k- f) b+ P0 P7 U

$ H3 s% B1 o5 Y2 ?2.比赛方式不同,ACM是在指定地点进行比赛,时间通常只有紧张的5个小时,在这5个小时内,需要各个队员的精神高度集中的投入到算法问题的解决中来,而且程序必须是在一定效率的情况下运行(比如比赛时程序应该在1s结束,只能占用256mb的空间,如果在时空限制下没有完成算法问题的解决,是不能记分的)有的题目可能做不出。而数学建模则在3天甚至更长的时间比赛,比赛地点一般在学校提供的教室里,可以随便自由出行,甚至可以是在家(比如今天坑爹的新冠病毒疫情,想必许多美赛选手都是在家比赛)。一般数学模型的解法只有最优最劣与否,没有对错。! Q$ T. d  |7 V+ ^
: ~+ F; N* U) W
3.可访问资料的范围不同,ACM允许携带纸质资料,选手们通常会把平时浏览过的一些有意义的博客打印下来,还会打印好相关资料,如ACM模板等,在比赛的时候还会有志愿者们巡逻考场,不允许携带电子设备和U盘等进入考场,考场也通常会打开电子屏蔽器,屏蔽相关信号,切断与外界的交流。而数学建模则多要靠自觉,在比赛期间不能通过QQ等通信工具与其他选手交流比赛,要上传给学校。但除了要保证是自己做的以外,其他的互联网资源都是可以访问的。这时,强大的信息检索能力就重要了起来,可以在网上搜索相关的有用的模型,用计算机的语言实现。也有一些学长只是准备了20几天,靠着强大的学习能力获得了省一。8 m: |, O2 s1 Y+ T( D

/ g6 S8 t$ |. @5 G# i, p8 F8 @4.拿奖的难易不同。虽然数学建模和ACM在各自的领域都是属于家喻户晓的顶尖水平的竞赛。但是其实数学建模的水分还是总体上比ACM要高的。有的人也表达过相同的看法,通常一支队伍如果在ACM方面取得了某些奖项,一般情况下,这个队伍里的每个人总还是有两把刷子。但是如果是数学建模,可能就不一定了,输出的可能就是一个人,其他人只是用来给那个人加油助威的。从每年获奖的情况来看,从获奖总数和参加人数来说,ACM的奖项含金量更高。但这并不意味着数学建模没有用, 在数学建模的过程中,将学到很多平时学不到的科研的知识,比如论文的撰写和发表啊。而且数学建模相比于ACM,更加贴近科学。如果ACM和数学建模都能发展好,应该对时下大火的人工智能研究有好处,也能跟大概率获得算法相关的Offer。% F% I4 D! E7 ]' j! }2 R

: e( M) }. P- z8 Z& G+ r语言的选择* y: J) g# F3 j1 }' [
' [4 _$ u" N/ Z: B4 r
目前主流的应用于数学建模的编程语言主要有两种,他们分别是Matlab和Pyhton。
- D, S0 S* T3 V7 U1 _* Q* x5 _* V, j$ o- }# b
Matlab语言的历史比较早,美国MathWorks公司出品,和Mathematica、Maple并称为三大数学软件。在Pyhon还没有问世前,广泛应用于数学。优点是学起来方便,要学的东西相对较少,适合不喜欢折腾的小白玩家,缺点是闭源,扩展性低下,除了数学之外没有太多的用途。
9 N, k$ b3 y% r/ k* t8 Z* G4 P7 ^, D/ }9 Z
  x) T# C$ q/ A这里推荐一个Matlab语言的学习网站:https://www.w3cschool.cn/matlab/
; r) Q( m1 t- [9 A
5 ^( ~! g1 Y4 T" l2 wPython的大名相比大家都知道,他在深度学习,爬虫,机器学习等方面有很多应用,并且扩展性好,有丰富的功能和优质而成熟的社区,免费,开源,体积小,应用范围广,是未来的主流语言。我在这里向ACMer推荐这种语言,在以后的工作中,也可能经常用的到,并且以后要学习深度学习和机器学习的相关知识时,还会要用到它。但Python对于编程小白则不太友好,可能需要折腾很久。0 B/ J3 _1 I/ [7 @

0 |; d; w% ]/ T/ s; o这里也推荐一个Python3语言的学习网站:https://www.runoob.com/python3/python3-tutorial.html
1 _  O- v9 n+ ^; r% x3 O; W3 j
* E9 ^' V. W1 q注意,我们学的是Python 3.x,不是python2.x,他们两者的语法是有区别的,Python3.x更新
5 `( V! ]' D! W7 m* u# E* c
" H. ], G7 o; v: t这个网站上还有Python小实例,可以做一做,提高熟练度,一定要动手去做,如果不动手,到时候就会很生疏4 Y$ a6 U6 h/ h) G

! W% W, L2 ]; b" Fhttps://www.runoob.com/python3/python3-examples.html" ]# H$ r1 A5 \; h2 p' E
+ W" I1 `0 o! G+ g7 |/ d
下面是一本网红书籍,几乎是Python入门首选,大家也可以看看,不过个人觉得,还是上面的这个网站写的好,这本书漏了很多
' x6 g6 L% o! G9 ]$ U* ?# G, a
; ?5 o  J; @; @4 `) K( I4 ?- E. J

5 p9 p0 C8 \; b( u0 B5 Q+ }7 u一些需要进一步学习的包* s# [1 [& A9 k, u

: z9 S4 y/ D* }% r" q& s' U2 S# _+ dPython的包在他们官网一般都有详细的教程,可惜的是,他们大部分是英语的。国内有些包的教程还没有人翻译成中文,或者相比英文版缺斤少两。推荐大家阅读英文原版,如果实在看不懂就看中文版0 ^% r. X3 f5 x& I# n! L3 g

  Q9 V+ e; n5 U" c, M# U( L首先,需要学完数据分析三剑客Numpy,Matplotlib,Pandas。这三个包基本上在数学建模中经常用到,一定要掌握,下面分享的是他们的一些教程:
# C6 D" S6 ]$ X+ S% b- `( r' ]& p& a; b" }
numpy
8 }5 W, S% ~0 M% n' J中文 https://www.runoob.com/numpy/numpy-tutorial.html
" X, o# V+ x/ |* J6 \2 o1 S7 K/ q英文 https://numpy.org/doc/) t- @, L% s2 l! S: F, x

- I; ]  O5 f& U/ O9 T- }$ dmatplotlib, K8 A" e% X; w, B: N
中文 https://www.matplotlib.org.cn- @& d6 a( V* S, z( s. B0 @6 {
英文 https://matplotlib.org/contents.html  j4 ~5 u4 q/ O) d+ l3 G
8 f" }2 b8 Q) ?1 U, M) @- \
pandas* Y" d" b& h* A6 |$ f
中文 https://www.pypandas.cn! X# R6 C& y4 T' ^7 M
英文 https://pandas.pydata.org/docs/
3 z* m2 x* {% `8 F
1 ]! l0 Z# d' G4 ?! e+ {下面列举需要学习的一些包及其用途,大家可以参考参考,搜索他们的官网找到教程学习7 V1 b: W" U" L% c% ^

) e$ l! H6 _; ]6 F$ \数学计算:sympy numpy pandas. M; f; G' T# n$ g
数据分析:statsmodels4 Z: |& m0 e; r
图像处理:opencv pillow5 \; O- |6 z& n! o0 {& |
遗传和进化算法:geaty
4 c- v8 [3 U/ `0 u7 ^数据可视化:pyecharts seaborn matplotlib
- P4 x9 u" M. `; F6 Z7 _! U* h& @% d) t机器学习:sklearn scipy& R& `+ P" w, J1 o5 v
数学规划优化:gurobi  B  o; [# N! a" r1 T% b
原文链接:https://blog.csdn.net/STL_CC/article/details/104740689
) t9 s) H* `4 d( s: r3 D5 o
6 C8 Z1 Q* Z" ]( m% U( P
; O  n- T: g" ^5 q
作者: 哈娃    时间: 2020-4-10 21:50
有帮助顶顶顶顶. u4 D- C2 J5 c, ?4 P% x

& c; G' l9 v) H% v




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5