文章目录
第一次开竞赛的经验贴,如果有写错的地方,还望各位同学理解。
这一篇文章写于比赛结果公布的第二天,也是对上一篇数学建模心得体会的补充
(上一篇心得体会写于比赛完成后的第二天:华为杯心得体会)
首先介绍一下笔者队伍的情况:
1)获奖情况:国二等奖
2)选题:E题 锡林郭勒草原放牧
3)三人基础:差不多都是零基础。笔者赛前会使用python(笔者课题是深度学习)
4)比赛中用到的软件:python3.6(pycharm),matlab2021a,spss。
5)熬夜情况:倒数第二晚三点睡 最后一晚五点睡 其余时候正常作息


2022年共有ABCDEF六个题目,选择其中一个完成即可。
其中每道题目有数量不等的小问。
2个小问,3个小问,4个,5个,6个…都有可能
每个小问里拆开也可能还有小小问
如果简单分类的话,我会把每年的建模题ABCDEF分为下面几类:
1)华为/中兴专项题
这种题目可能会涉及到通信工程,信号处理,芯片等工程问题,感觉这是华为和中兴公司自己做工程时遇到的一些真实问题,然后改编成了数学建模题。
2)“涉及到优化,纯数学性质较强的一些题目
比较典型的:2022年一个题目:切木板
3)大数据题目
这种题目会提供很多excel表格数据,可以大量使用统计学方法,机器学习乃至深度学习的方法来解决问题。
比较经典的:2021年题目D:抗胰腺癌候选药物的优化建模

但是,一个完整题目有很大可能有一定穿插:
大数据的题目中,也可能存在某个小问是优化问题。
优化的题目中,也可能存在某个小问题属于统计学问题
从个人感觉上来说(仅仅是个人感觉)
1)大数据题最简单,报的人也是最多的
2)优化题,纯数学题这些难度位于二者之间
3)华为/专项题最难
笔者最开始知道自己水平不够,再加上本身研究生课题方向涉及到了深度学习,所以只准备了“大数据题”的一些解题方法。
在比赛开始前一到两个月,学校带着大家一起练题。题目源自于本科的竞赛题,一些数学专业的作业题,目的就是为了让我们对数学建模有一定的基础储备。
练习完简单的题目之后,就可以着手准备真题了。
如果时间来不及的话,建议就只把对应题目的方法准备一下就行了。比如笔者知道自己只会选择大数据的题目,所以我就只看大数据的准备方法,尤其是把机器学习的代码从头到尾运行了一遍,保存好。
由于笔者本论参赛主要以“大数据题”来准备的,所以备赛这里也主要以大数据题为主。
下面给出一部分建模过程中,用的较多的一些基础语法(个人觉得用的多的,因为篇幅原因只展示一部分)
1)比如说读取CSV,excel文件
具体也可以参考我这篇博客,就是当时准备数学建模的时候写的:python读取CSV文件
样例:
import pandas as pd
file_name='D:/数学建模2022/算法/SVM/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
data=pd.read_csv(file_name,names=names)
print(data)
print(data.shape)
matlab中也有对应的方法,这里就不单独列出了。
2) 循环,遍历,zip,数组,列表,字典等一系列基础语法,需要熟练
比如for循环
for row in sheet[3:sheet.max_row]:
比如zip函数
list1=[1,2,3]
list2=[4,5,6]
list3=zip(list1,list2)
print(list3)
这些语法用熟练了,比赛时候写代码才不会卡顿,从而节省时间。
怎么去练习呢:
我练习方法是,做真题时会在网上看一些优秀的论文,看看它们的代码是什么样子的,然后将里面不会的语法进行重新编程,熟悉一下。多做几套,基础语法自然而然就牢固了。
数据预处理包括处理缺失值,离群值等等。
这次比赛,数据预处理,我主要用的是matlab2021a中自带的数据预处理包:
如何使用它,我这里就不赘述了,大家可以去网上找找教程,非常简单智能,画图也非常好看
在网上的视频,博客都有非常详细的教学,如果只考虑会调用,大家花两到三天就可以学会,一点都不难。
笔者的博客里也有一些现成的代码。
同理,在B站也有很多教程,会调用,改参数就行。
个人觉得python画出的图像更鲜艳(相比于matlab),所以重点学了如何用python画图。
有一些比较基础的内容需要提前看一下,比如的python的大画布小画布区别这些,以及中文无法正常显示的这些问题
回归分析,相关性检验,时间序列预测等等,这个软件是非常好用的,而且造图也非常快。
我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
我想找到在某些文本中找到一些(让它是两个)句子的好方法。什么会更好-使用正则表达式或拆分方法?你的想法?应JeremyStein的要求-有一些例子示例:输入:ThefirstthingtodoistocreatetheCommentmodel.We’llcreatethisinthenormalway,butwithonesmalldifference.IfwewerejustcreatingcommentsforanArticlewe’dhaveanintegerfieldcalledarticle_idinthemodeltostoretheforeignkey,butinthis
我正在使用Maruku,将Markdown(超集)转换为HTML,你知道我该怎么做才能从HTML转换为Markdown吗? 最佳答案 Google发现了一个名为reverse_markdown的ruby脚本.它似乎可以满足您的需求。 关于ruby-on-rails-我需要从HTML转到markdown,有什么建议吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/175162
我正在使用ruby1.8.7。p=lambda{return10;}deflab(block)puts'before'putsblock.callputs'after'endlabp以上代码输出为before10after我将相同的代码重构到这里deflab(&block)puts'before'putsblock.callputs'after'endlab{return10;}现在我收到LocalJumpError:意外返回。对我来说,这两个代码都在做同样的事情。是的,在第一种情况下我传递了一个过程,在第二种情况下我传递了一个block。但是&block将该block转换为pro
ruby中有这样的东西吗?send(+,1,2)我想让这段代码看起来不那么冗余ifop=="+"returnarg1+arg2elsifop=="-"returnarg1-arg2elsifop=="*"returnarg1*arg2elsifop=="/"returnarg1/arg2 最佳答案 是的,只需像这样使用send(或者更好的是public_send):arg1.public_send(op,arg2)这是可行的,因为Ruby中的大多数运算符(包括+、-、*、/、andmore)只需调用方法。所以1+2与1.+(2)相同
所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。