优质解答
以下建议针对非数学系的新人,可以有计划的学习,不过别忘记,比赛是3个人的事情,所以下面涉及的知识仅靠一个人是不太可能胜任的(不排除有大牛人),这时候队友的分工协作就尤为重要了.
首先是我擅长的离散型的模型.如果你是计算机专业的,又有ACM经验的话,那么你可以大展身手了.不过对于非计算机专业的同学(比如当年的我)来说,应该是没有什么算法的经验了,所以恒心和毅力,对队友的信任,以及RP值(这点我超级自信)就非常重要了.
模型方面:姜启源的那本《数学模型》第三版,谢金星的《优化建模与LINDO/LINGO软件》就可以了,不用抱着一堆书结果什么都看不了.
算法的实现对于数学建模起着决定性的作用,一般要会以下算法.不过不用像计算机专业的那样,追求log n或者n或者nlog n的算法复杂度,只要能出结果就行,10min还是20min都可以.不过千万不要用LINGO求解TSP啊,要好多年才出结果.
1、 动态规划(工序调度,排课表,排比赛场次)
2、 0-1规划(投资,下料,运输)
3、 线性规划(投资,下料,运输)
4、 图的一系列问题(深度广度搜索,遍历,TSP,着色等等)
5、 网络流(多半转化成规划问题)
6、 最好能掌握神经网络,遗传,模拟退火,蚁群,禁忌搜索中的一种或多种,因为离散的赛题多半是组合优化的问题,大多数模型在现有算法能力下是没有精确解的(二维下料,排课表,TSP等等),所以启发式算法就显得尤为重要,比如遗传算法,MATLAB7.X已经有这个工具箱了,但是一定要弄清原理,知道怎么编码,怎么确定种群规模和遗传代数,怎么确定遗传概率和交叉概率.怎么避免早熟,怎么跳离局部最优.
软件方面:
1、 C/C++/JAVA/BASIC.随便会一种就可以,C的算法效率绝对比MATLAB高出很多,所以一般的算法还是用C实现吧.
2、 MATLAB.很无敌的数学软件,不多介绍了,最好能掌握神经网络工具箱和遗传算法工具箱的使用方法.算法的话,它可以实现的的C/C++也可以,用什么就看个人喜好了.
3、 LINGO.很无敌的规划模型的求解软件,对于离散模型来说,这个必须掌握.别忘记求解的时候在“全局最优”复选框前打钩,不然结果可能是局部最优.(LingoàOptionsàGlobal Solverà Use Global Solver)
然后是我不擅长的连续模型(可以说完全不懂,囧).这个对编程能力的要求相对低一点,但是数学基本功要好,主要涉及的知识是数理统计和微分方程.
统计类问题:聚类,判别,单因素多因素方差分析,回归,拟合,还有那叫什么灰色预测的和时间序列分析的模型,听说很好用,但是我不会.
微分方程:不说什么了,这个我完全不懂,应该就是什么龙格库塔那类的,用MATLAB算参数的,其他的我也不说什么了,说得太多只能暴露我的无知.
以上就是我的一点点心得,希望可以对参加数学建模的同学有帮助,如果不仅仅是为了比赛获奖,当作一项爱好也是不错的选择.
以下建议针对非数学系的新人,可以有计划的学习,不过别忘记,比赛是3个人的事情,所以下面涉及的知识仅靠一个人是不太可能胜任的(不排除有大牛人),这时候队友的分工协作就尤为重要了.
首先是我擅长的离散型的模型.如果你是计算机专业的,又有ACM经验的话,那么你可以大展身手了.不过对于非计算机专业的同学(比如当年的我)来说,应该是没有什么算法的经验了,所以恒心和毅力,对队友的信任,以及RP值(这点我超级自信)就非常重要了.
模型方面:姜启源的那本《数学模型》第三版,谢金星的《优化建模与LINDO/LINGO软件》就可以了,不用抱着一堆书结果什么都看不了.
算法的实现对于数学建模起着决定性的作用,一般要会以下算法.不过不用像计算机专业的那样,追求log n或者n或者nlog n的算法复杂度,只要能出结果就行,10min还是20min都可以.不过千万不要用LINGO求解TSP啊,要好多年才出结果.
1、 动态规划(工序调度,排课表,排比赛场次)
2、 0-1规划(投资,下料,运输)
3、 线性规划(投资,下料,运输)
4、 图的一系列问题(深度广度搜索,遍历,TSP,着色等等)
5、 网络流(多半转化成规划问题)
6、 最好能掌握神经网络,遗传,模拟退火,蚁群,禁忌搜索中的一种或多种,因为离散的赛题多半是组合优化的问题,大多数模型在现有算法能力下是没有精确解的(二维下料,排课表,TSP等等),所以启发式算法就显得尤为重要,比如遗传算法,MATLAB7.X已经有这个工具箱了,但是一定要弄清原理,知道怎么编码,怎么确定种群规模和遗传代数,怎么确定遗传概率和交叉概率.怎么避免早熟,怎么跳离局部最优.
软件方面:
1、 C/C++/JAVA/BASIC.随便会一种就可以,C的算法效率绝对比MATLAB高出很多,所以一般的算法还是用C实现吧.
2、 MATLAB.很无敌的数学软件,不多介绍了,最好能掌握神经网络工具箱和遗传算法工具箱的使用方法.算法的话,它可以实现的的C/C++也可以,用什么就看个人喜好了.
3、 LINGO.很无敌的规划模型的求解软件,对于离散模型来说,这个必须掌握.别忘记求解的时候在“全局最优”复选框前打钩,不然结果可能是局部最优.(LingoàOptionsàGlobal Solverà Use Global Solver)
然后是我不擅长的连续模型(可以说完全不懂,囧).这个对编程能力的要求相对低一点,但是数学基本功要好,主要涉及的知识是数理统计和微分方程.
统计类问题:聚类,判别,单因素多因素方差分析,回归,拟合,还有那叫什么灰色预测的和时间序列分析的模型,听说很好用,但是我不会.
微分方程:不说什么了,这个我完全不懂,应该就是什么龙格库塔那类的,用MATLAB算参数的,其他的我也不说什么了,说得太多只能暴露我的无知.
以上就是我的一点点心得,希望可以对参加数学建模的同学有帮助,如果不仅仅是为了比赛获奖,当作一项爱好也是不错的选择.