数学建模社区-数学中国

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

作者: 杨利霞    时间: 2020-3-24 15:49
标题: ACMer数学建模Python编程起步

8 n8 g- y/ v1 dACMer数学建模Python编程起步笔者一建模小白,同时也是一名ACMer。寒假期间学完了数学建模所需的一些编程知识,磕磕碰碰渐渐入门。在此为想要参加数学建模的ACMer分享一些经验。该文该帖系笔者原创,笔者刚入数学建模时,对于数学建模应该怎么样去编程也同样非常迷茫,在网上也没有找到相关的经验贴,故在此给大家分享几点经验。该文会长期更新,欢迎在评论区交流。
# M( }( ~( }: R
; u) V3 y7 F  F# D* w数学建模和ACM的区别
5 y# x6 z1 n8 g! w$ X# U0 @, W" t" U  ]
相比于ACM,数学建模编程主要有以下几点区别:: Z" S3 @, f/ a# A- t0 N/ m# O* e0 A

, u4 U9 G! N8 t4 k3 F, E3 q1.ACM的编程多是用来直接处理一些算法问题,需要对算法进行创新应用,重点在于算法;而数学建模中的编程多是用来运行算法模型以获得所需的数据,或者是画图、画表格之类的,很多算法模型都是现成的,有很多ACM中的诸如Floyd的算法已经被封装成模块。有趣的是,他们可能是以伪码表示的,并不像ACM模板,都已经写好代码了,这时,就需要各位大佬根据伪码翻译成计算机所能理解的语言。ACM重在算法,数学建模编程虽然也需要对算法模型进行创新,但更多的,重在计算,重在选择最优的模型达到最优的效果。
3 S" n: l" ~4 `5 R5 d: @& l* g, H, t' A9 K9 n+ Q2 R$ S
2.比赛方式不同,ACM是在指定地点进行比赛,时间通常只有紧张的5个小时,在这5个小时内,需要各个队员的精神高度集中的投入到算法问题的解决中来,而且程序必须是在一定效率的情况下运行(比如比赛时程序应该在1s结束,只能占用256mb的空间,如果在时空限制下没有完成算法问题的解决,是不能记分的)有的题目可能做不出。而数学建模则在3天甚至更长的时间比赛,比赛地点一般在学校提供的教室里,可以随便自由出行,甚至可以是在家(比如今天坑爹的新冠病毒疫情,想必许多美赛选手都是在家比赛)。一般数学模型的解法只有最优最劣与否,没有对错。' H& n4 r  ^- H$ {
! B6 F# S8 Q# S4 [1 O3 ]3 |
3.可访问资料的范围不同,ACM允许携带纸质资料,选手们通常会把平时浏览过的一些有意义的博客打印下来,还会打印好相关资料,如ACM模板等,在比赛的时候还会有志愿者们巡逻考场,不允许携带电子设备和U盘等进入考场,考场也通常会打开电子屏蔽器,屏蔽相关信号,切断与外界的交流。而数学建模则多要靠自觉,在比赛期间不能通过QQ等通信工具与其他选手交流比赛,要上传给学校。但除了要保证是自己做的以外,其他的互联网资源都是可以访问的。这时,强大的信息检索能力就重要了起来,可以在网上搜索相关的有用的模型,用计算机的语言实现。也有一些学长只是准备了20几天,靠着强大的学习能力获得了省一。( k, ~1 [. Q% y5 n& o0 d

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

; R# f8 f3 p. }+ x+ M& f语言的选择
5 o0 {# \8 p" g& y8 a
* i8 X0 W: r0 G' x6 j目前主流的应用于数学建模的编程语言主要有两种,他们分别是Matlab和Pyhton。
5 ?/ ^. i8 b# T% {: P: P: ]
4 Y" |6 t6 D% l6 Z' P9 l; oMatlab语言的历史比较早,美国MathWorks公司出品,和Mathematica、Maple并称为三大数学软件。在Pyhon还没有问世前,广泛应用于数学。优点是学起来方便,要学的东西相对较少,适合不喜欢折腾的小白玩家,缺点是闭源,扩展性低下,除了数学之外没有太多的用途。5 s3 G! {: V  A- ~. }- L, h# c" h
" T* y1 U1 D$ r: L# }
这里推荐一个Matlab语言的学习网站:https://www.w3cschool.cn/matlab/
  `$ _! D# o& `: I% y8 U8 _. A
* E. H" p: O- X$ q# ^Python的大名相比大家都知道,他在深度学习,爬虫,机器学习等方面有很多应用,并且扩展性好,有丰富的功能和优质而成熟的社区,免费,开源,体积小,应用范围广,是未来的主流语言。我在这里向ACMer推荐这种语言,在以后的工作中,也可能经常用的到,并且以后要学习深度学习和机器学习的相关知识时,还会要用到它。但Python对于编程小白则不太友好,可能需要折腾很久。$ ~9 k4 o2 Y$ \9 H+ J4 X$ e. z& ]

/ r& m5 S9 Z3 O. `这里也推荐一个Python3语言的学习网站:https://www.runoob.com/python3/python3-tutorial.html  a: L3 u  e% X; o
1 P9 x0 V1 }4 R3 V8 I: z/ o; |
注意,我们学的是Python 3.x,不是python2.x,他们两者的语法是有区别的,Python3.x更新
/ k* ^. a, A9 T, ~+ C8 P
6 I# N8 |% R' V* L$ Z& `这个网站上还有Python小实例,可以做一做,提高熟练度,一定要动手去做,如果不动手,到时候就会很生疏+ G4 B, P, x+ \" {; ]7 I8 U/ p
1 C: ?% k3 K( z) X
https://www.runoob.com/python3/python3-examples.html
! q* P$ o/ }2 _; {1 X4 D5 m4 b0 M0 p+ M4 @" W7 \
下面是一本网红书籍,几乎是Python入门首选,大家也可以看看,不过个人觉得,还是上面的这个网站写的好,这本书漏了很多
! H; `7 Q$ M% C0 y8 \0 t" a2 [: d9 R% J; D1 @6 x

$ w9 S1 a) E! g* }0 P0 v7 y+ j( \$ O
一些需要进一步学习的包) j9 F$ [/ ~- N
6 W; w/ C# M. n: R3 x0 h& Y
Python的包在他们官网一般都有详细的教程,可惜的是,他们大部分是英语的。国内有些包的教程还没有人翻译成中文,或者相比英文版缺斤少两。推荐大家阅读英文原版,如果实在看不懂就看中文版
" S) V  b3 p1 e* D5 ?1 p* Z* m
% b; ~, ~) u& o% L3 j, h' E8 f首先,需要学完数据分析三剑客Numpy,Matplotlib,Pandas。这三个包基本上在数学建模中经常用到,一定要掌握,下面分享的是他们的一些教程:# C6 j: n5 @, J0 H4 p
+ I0 b6 N2 q9 |
numpy 1 `- K# e( S+ s6 C5 r4 w
中文 https://www.runoob.com/numpy/numpy-tutorial.html1 b" e& t7 ~. n7 R* \2 X6 ^3 ]! j
英文 https://numpy.org/doc/
7 F/ n# W+ }! L9 Z$ ?% d! P" D1 h; f; {: U
matplotlib# ~# H+ z* N  v' h* o9 @  j
中文 https://www.matplotlib.org.cn
  N5 R. K0 x: u7 g* G5 H9 g9 l9 \英文 https://matplotlib.org/contents.html$ l# l" G! |& }" L( m
& l1 m" a! j6 L- j
pandas
/ D. B* ?- f4 I% H6 J- x中文 https://www.pypandas.cn9 F5 J1 A& \# f' P
英文 https://pandas.pydata.org/docs/: u  t9 i! r# ?; {6 u# V- R, Y

% R* b0 L' ?. V) n1 r下面列举需要学习的一些包及其用途,大家可以参考参考,搜索他们的官网找到教程学习
5 t( z" b  Z" I; r+ A( U* O; q' w' R, ]
数学计算:sympy numpy pandas& k7 K* ]; s9 I! \/ V) S$ V9 t  S- l& h
数据分析:statsmodels
+ j, x0 Y% T+ M8 t图像处理:opencv pillow
' r: p/ I+ {0 X' [- a遗传和进化算法:geaty9 O) V1 l2 q. x$ R$ _
数据可视化:pyecharts seaborn matplotlib
! {) C3 `! b4 |# Z% G机器学习:sklearn scipy
5 X: q8 V  l) @& p数学规划优化:gurobi
3 C% e3 C/ n  d* i5 O) R原文链接:https://blog.csdn.net/STL_CC/article/details/104740689
4 C# S3 ?# F0 T: S, q- a
( Q/ G  t# h  k5 d0 G$ G- y% @% `
) N, Z' |( O$ E* Q
作者: 柠檬草lll    时间: 2020-3-26 17:38
发表回复不错的资源0 Z/ H5 q: t4 Z+ a( N8 X





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