数学建模大赛集训实践报告_第1页
数学建模大赛集训实践报告_第2页
数学建模大赛集训实践报告_第3页
数学建模大赛集训实践报告_第4页
数学建模大赛集训实践报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学建模大赛集训实践报告一、实践目的1.素养提升(1)提升与数学有关的核心素养由于与数学建模相关的知识,大多数是我们在平时的学习过程中未接触到的。所以我们还需要对与之相关的运筹学、微分方程、概率数理统计等方面的知识有大致的了解。由于时间仓促,我们并不能把每一个知识点都学习得很透彻,但是对于之前从未接触这些知识的我来说,也是一个很大的提升。2.能力提升(1)提升编程能力对于一些遇到的问题,我们常常需要借助工具去完成建模,比如:Matlab、Lingo等,可能刚开始还不是很熟,但是在两次的模拟之后,就对两个软件的运用能力有了新的提升,再次过程中,写代码的能力也得以提升。(2)提升团队合作的能力每个人对待问题都有不同的看法,当然在讨论与分析问题中,我们会出现分歧,这是在所难免的,但正是因为这些分歧的存在,才能让我们更加全面地看待问题和分析出一个较为完美的答案。团队合作最重要的是齐心协力,我很幸运就遇到了这样团队,不管大家遇到什么样的难题,都可以迎难而上,共同克服它。(3)提升写论文的能力数学建模的主要结晶就是最后的这一篇论文了,论文不仅要求你把你们团队的所思所想写进去,还要能写得思路清晰,让人看得明白,并能看到你们处理问题方法的好处。除此之外,论文的排版也尤其重要,排版是它的门面,要能够让人一眼看上去舒服、整齐,这就需要写论文的时候细心一点,写完了再进行重新排版。二、实践内容数学模型其实就是对实际生活中遇到的一些问题的一种数学表述。它是属于一门应用方面的数学,要学习好这门课,我们得学会如何将实际生活中的一些问题经过分析、简化转化为数学问题,然后再运用合适的数学方法去解决。数学建模是在运用数学的方式去思考,是在数学语言以及方法的角度上,通过抽象或者简化来建立能够大致刻画并解决实际问题的一种有力的数学手段。首先我们对有关于建模的知识进行了统一的学习。什么运筹学、微分方程、概率数理统计等,还需要我们熟练掌握一些软件,例如MATLAB、LINGGO、SPSS等,掌握好这些软件会对建模有着巨大的帮助,对论文也增色不少。紧接着,我们进行了为期6天两次的模拟。实战才能获取最宝贵的经验。在两次模拟中,我们也收获不少,关于团队,关于知识。这都会是我们人生路上最丰厚的财富。三、实践过程1、查找资料我一直认为“文献为王"。阅读文献的数量很大程度上决定了你论文的质量。因为看过的文献越多,知道的方法越多,可选择的范围越广,建立的模型越符合实际。关于文献搜索,三个人要分工,即根据题目中可能涉及到的知识,分头寻找。一般先找中文资料,在知网、维普、万方等数据库上进行搜索。我的建议是把一个数据库上关于这方面资料10年的所有相关论文都下载下来,然后用浏览的方式看完,有了一定的了解后选择其中适合的方法加以改进创新,完成模型的建立。其实很多中文文献都是借鉴英文文献而来的,读中文资料相当于读英文资料的概要。阅读完中文文献后可以开始搜索英文文献,根据题目中的关键词进行搜索,可能搜索结果并不理想,这时候将关键词换为其近义词进行再次搜索,多次尝试后可能会得到比较满意的结果。另外就是按照参考文献历程搜索,每篇文献后面都列有相关的参考文献,可以通过寻找这些文献来理解研究历程,很可能就有新的发现。查找到文献后,要注意整理与归类,方便寻找与最后的记录。所以在题目出来之后,你就联系你所学的,在根据题目的关键词、算法等去搜索好的文献,这可以帮助我们写出更好的论文,建立更加符合实际的模型。2、讨论问题在这道题目出来的时候,我们小组首先每个人静下心来,各自将题目理解个十五分钟左右。不要小看这一步,对于建模来说,题目的理解是写论文的基石,只有理解正确,论文才能站稳脚跟。在每个人都将问题分析得差不多时,我们便开始针对自己对题目的理解和疑问进行分析和讨论。个人认为提升团队默契的关键在于争执,简单点说就是要吵起来。我们3个人经常在选择方案的过程中吵得不可开交,始终奉行着“我不同意你的观点,但是我给你说话的权利”规则,在对方说完之后列举自己的观点来对他进行反驳,直到吵着吵着分出了结果。3、分工合作一个人的能力毕竟有限,不能把什么都做得很好,即使少数人能方方面面都顾全到,那得多么的累,况且真正的数学建模大赛是对时间有限制的,不会让你不限时地让你做。正所谓‘三个臭皮匠,胜过诸葛亮’,可见思想与思想之间的交流产生的结果是多么的好,此外,每个人因为所处环境与经历还有专业的限制,每个人思考问题的角度都不尽相同。所以集结每个人的优点才会使自己的团队所做出来的结果更优秀。在建模的过程中,我跟其他两个队友进行正确的分工。在我们对题目进行了彻底地分析之后,对它的解答思路有了一定正确的方向时,就开始分工合作。比如我主要负责的是我们团队的论文撰写,其它两个队友负责建模。有时候不一样的题目也会有不一样的分工。比如我们进行第二次模拟的时候,题目是房价预测问题,这就需要我们自己查找多年甚至不同城市的房价数据。我记得我们当时查找数据足足花了一天的时间,每个人负责查找一个城市,我负责的是查找西安近十年不同地段的房价,最终还要将我们三个人的数据汇总到一起。虽然过程很艰难,但是在最后论文完成的时候,我们都很开心。四、实践体会以前上课,只是更多地接触数学,本来在学习数学的过程中就遇到过很多困难,感觉很枯燥,很难学,概念抽象、逻辑严密等等,所以我的学习积极性慢慢就降低了,而且不知道学了要怎么用,不知道现实生活中哪里到。通过学习和运用了数学模型中的好多模型后,我发现了数学在应用方面的广泛性。数学模型是一种模拟,它使用一些数学符号、式子、程序编码或者图形图表等对实际课题本质属性的刻画,既可以解释一些客观现象,也能够能预测到未来的发展规律,还能够为控制某些现象的发展提供某种意义下的最优策略或较好策略。数学模型一般并非现实问题的直接翻版,它的建立常常既需要人们对现实问题深入细微的观察和分析,又需要人们灵活巧妙地利用各种数学知识。这让我对数学产生了浓厚的兴趣。通过做模型,不仅开拓了自己的知识面,也提高了运用知识解决实际问题的能力;通过模型讨论,欣赏到了身边同学思维的多样性和创造性的同时,也看到了自己的特点与不足,从而对自己的能力有了更深刻的了解。建模竞赛完之后,我感悟很多:队员之间的配合至关重要。每个人都有特长与不足,队员之间应该做到优势互补。因而队员之间要学会沟通,了解彼此的特点。在此基础上,还要学会配合。要彼此配合好,我觉得队员们做到:对自己的弱项,要虚心想队友请教,而对于队友的弱项,自己在弥补的同时还不应该影响队友的积极性;每个队员都应该有团队责任感和荣誉感,队友之间最忌讳的就是存在依赖性,“三个和尚没水喝”就是一个很好的警示;每个队员都要有大局观。建模过程队员之间难免出现意见不一致的时候,这时就要求队员保持清醒理智的头脑。自以为是,听不进别人意见的队员我觉得不适合建模。但是队员也不能失去自己的立场,一味盲从。每个队员的心态也非常重要。首先,一个人要有充分的信心,这是成功的条件之一,否则的话,遇到一点点困难就会逃避;另外,一个人不要将名利看得太重。如果看得太重的话,只回增加心理负担,也会促使自己去做一些急功近利的事情,从而影响自己的发挥。我个人认为,成功有一定的机遇成分,一些东西是强求不得的。所以我平时都是以“多学点东西”为动力的。创新思维的培养不容忽视。从历年来获奖论文中可以看出,那些有创意的思想构成了论文的闪光点,而那些闪光点是获奖必不可少的。其实,创新思维是一种习惯。只要养成此习惯,平时就可以一点一滴的积累创新灵感,到了该用的时候,这些灵感就有可能用的上。不是说创新灵感只出现在参赛的三天之内。通过同学之间的讨论和互相学习,我们有了更强的自学能力,演讲水平提高了,同伴合作的意识增强了,遇事更加沉着,利用工具资料的能力也加强了。我一直信奉脚踏实地,只有艰苦的训练才能出好成绩。在这段时间里,虽然条件一般,但是同学们都是非常用心,努力的学习,为自己为学校争光。团队精神。团队精神能很大程度决定这个队伍所取得的成绩,一队三个人要相互支持,相互鼓励。千万不能每个人都只去做自己负责的那一部分(建模好的只管建模,计算机好的只管写编程,写作好的只管论文写作),很多时候,一个人是无法想出一个全面的解决方案,只有大家一起讨论才有可能把问题搞清楚,因此无论做任何板块,三个人要一起齐心协力才行,只去依靠一个人的力量,要在三天之内写出一篇有特色亮点的的文章几乎是不可能的。合理的时间安排。做任何事情,合理的时间安排非常重要,建模也是一样,事先要做好一个规划,建模一共分十个板块(摘要,问题提出,模型假设,问题分析,模型假设,模型建立,模型求解,结果分析,模型的评价与推广,参考文献,附录)。你每天要做完哪几个板块事先要确定好,这样做才会使自己游刃有余,保证在规定时间内完成论文,以避免由于时间上的不妥,以致于最后无法完成论文。论文的写作。我个人认为论文的写作是至关重要的,其实大家最后的模型和结果都差不多,为什么有些队可以送全国,有些队可以拿省奖,而有些队却什么都拿不到,这关键在于论文的写作上面。一篇好的论文首先读上去便使人感到逻辑清晰,有条例性,能打动评委;其次,论文在语言上的表述也很重要,要注意用词的准确性;另外,一篇好的论文应有闪光点,有自己的特色,有自己的想法和思考在里面,总之,论文写作的好坏将直接影响到成绩的优劣。参加了这次建模培训,我感到我很幸运。这个实训周内,我为一个目标而奋斗过、追求过。在这段时间内,我学到了很多以前没有学到的东西,也见到了以前没见过的事物。开拓思路,开阔视野。在每一个模型的分析和建立之中,大脑无不经过苦苦思索,虽然有时发现自己想的对于此问题全是错的,但又往往与这些错的东西找到一些有用的东西,即使不能用在此处,但却是自己的。为了解决某个模型无不阅读大量的书籍,寻找可用的方法,我学到了以前所未学到的。我最开心的就是和我的队友、同学和老师有了一份可贵的同甘共苦的经历。在我们集训的这段日子里,也是我大学生活里过得最充实的日子,在集训即将结束的这一刻,我的心里也一次次涌起割舍不去的情怀。受苦算不了什么,收获才是真的。你永远也弄不明白那些知识,除非你亲自却拜访它们;你永远也说服不了别人,除非你真正的说服了你自己;你永远也不是他们的好队友,除非你把他们都当成你的好队友。通宵过了,消沉过了,欢呼过了,我只是在求知和做人的道路上迈出了小小的一步。一切源于理解,一切源于合作,一切源于热烈的追求。下面是我们团队第三次模拟的论文:夜游轮船调度问题摘要 本文主要是对夜游轮船调度进行研究。夜游轮船满载150人,载足够乘客游览一次的时间为45分钟,而且至少要达到满载的60%以上。在晚上18:00到22:00的时间段内,游客以平均每分钟5个人的速度来到码头,为了使轮船公司每天的运营收入最大化,我们通过数学建模的方法来安排不同情况下游轮的航程和数量。 针对问题一,我们首先根据题上已给的信息和相关数据,因为只有一艘游轮,所以我们运用贪心算法思想,对游轮的载客量贪心选择为满载,所以游轮从18:30发船,到最后一次23:30发船,一共发了8次船,总共的载客量是1200人。 针对问题二,我们通过以C#为脚本语言借助Unity建立了一个游轮、人与时间的模型,为了尽可能地减少游轮的数量,减少公司的支出,我们使用控制变量法,对所存在的2~8艘船分别进行了计算,最后得到轮船公司拥有3艘游轮是最合适的情况,而对于游轮的航程,则需要保证这三艘游轮中有一艘游轮必须停在码头即可,每艘游轮的载客量依旧保持到满载。 针对问题三,由于题目上增加了游客等待够20分钟就会离开的条件,所以必定会有游客离开,所以为了减少游客的离开人数,本问我们同样采用与上面两问相同的思路,采用控制变量法和离散变量的数学思想,得出结论:当游轮数量为一艘时,游轮出航5次,游轮满载且一天的总载客量为750;当游轮的数量是多艘时,游轮3艘且每艘的载客量为140为最优解。关键词:轮船调度贪心算法控制变量法离散变量问题重述近年来某地夜游轮船受到了游客的欢迎。在灯光的配合下,江面与两岸景色十分优美,许多游客慕名而来欣赏美景。当地轮船公司因此开设了“夜游”服务。目前,提供“夜游”服务的游轮满载是150人,安排轮船载客游览时间是45分钟/次,票价为80元/人/次。另外,为了节约游客的时间成本,提高游客的满意度,轮船公司规定:游轮不需要满载即可起航,但启航时游轮的载客量至少要达到满载的60%以上。根据统计,游客主要在18:00点到22:00来参观游览,且在18:00到22:00时间段内,游客以平均每分钟5人的速度到达码头并参加“夜游”。从轮船公司角度出发,轮船调度的目的首先是要求每天运营收入的最大化。其次,由于游轮的每次运营都有油费、设备折旧等成本存在,轮船公司希望游轮每天总的运营次数尽可能少,以节约运营成本,实现利润最大化。同时,从提高服务质量的角度出发,轮船公司又希望在总运载人数不变情况下,游轮每次运载的人数尽可能均衡。请结合轮船公司的具体需求,建立数学模型并解决如下调度问题。1.如果轮船公司只有1艘游轮,问该游轮如何安排航程?一天总载客量是多少?2.若轮船公司有多艘游轮,问轮船公司最少需使用几艘游轮?分别如何安排航程?每艘游轮载客量是多少?3.针对实际中出现的游客愿意等待轮船返回的情形,假设游客到达港口最多等待20分钟,若20分钟游轮未到,则自动离开。请在该假设下重新考虑问题1和问题2。问题分析2.1问题一 根据题目以及所给出的已知条件,分析可知:尽管游轮至少要达到满载的60%以上才能启航,但是为了使游轮的收入最大化,我们运用贪心算法的思想,直接让游轮满载,此时才能使轮船公司卖出的票最多,从而达到每天收入最大化。因此我们通过计算得到,游轮的航行次数为8次。2.2问题二 问题二中所需要求两个变量,一个是游轮所需要的最小数量,另一个是求每艘游轮的载客量,为了简化题目,并且使游轮公司的收入最大化,这一问依旧运用了贪心算法的思想,对游轮的载客量进行贪心选择,使游轮的载客量达到最大,即满载150人。这样只剩下游轮数量这一个未知量,为了使游轮的利用率达到最大,再借助于第一问得到的结论,我们把游轮的数量控制在2~8艘范围之内。所以我们在这个范围内,再次运用控制变量法,分别比较不同数量之内游客所等待的时间,对比发现,只有当游轮数量为3艘以上时,游客等待的时间为0,即都存在有一艘游轮靠岸在码头,又为了提高游轮的利用率,所以我们最后选择使用3艘游轮。2.3问题三 由于题目对上面的两问再次加入了游客等待20分钟后,若游轮不来,游客就会离开的条件,所以在此期间,一定会有游客离开,为了减少游客离开的数量,我们再次运用控制变量法,以离散变量的思想,对游轮的载客量进行改变,发现当游轮满载时,游客离开的数量最少,而此时游轮启航的次数为5次;当游轮多艘的时候,我们发现若有论一就满载时,最后一班剩余的人数不够满载的60%,因此对比分析出游轮的载客量为140时,能够减少游客的离开,所以我们再次控制变量,保持游轮载客量为140,改变游轮的数量,得到游轮为3艘时,为最优解。模型假设假设22:00之后,只要有游客来,游轮公司依旧继续营业;假设没有游客等待的条件,那么游客会无限等待;假设游客看到船停在码头,就上船视为不等待。符号说明符号说明x游轮载客量y游轮出航次数T游轮等待时间K脚本开关Wait等待开关Shipnum游轮数量Shiphaveman在游轮上等待的人Sleeptime等待下一班游轮的时间Shipsleeptime游轮离岸时间Shipgetman游轮载客量Haveman岸上处于等待状态人的数量Havetime游客等待的总时间Shiptimes发船次数Allman总载客量模型的建立与求解5.1问题一模型的建立与求解 由题目所给出的数据得知,从18:00到22:00一共来了1200名游客,同时游轮启航时的载客量至少要达到满载的60%以上,游轮每45分钟启航一次。易计算得知,在18:00的时候,码头上的游客数量恰好为150人,而我们运用贪心算法的思想,贪心选择游轮的载客量为满载。所以游轮在18:30的时候就可以进行第一次启航,经过45分钟,游轮回到码头,此时码头上的人数为45*5=225人,游轮满载后再次启航,码头上还剩余75人,在继续等待游轮回到码头,期间来的游客也会在码头上继续等待,以此类推,直到所有的游客都游览完毕。下面是我们以此得到的游轮的航程:表格SEQ表格\*ARABIC1游轮的航程时间人数游轮状态剩余人数18:000等待游客中018:30150第一次发船019:15225第二次发船7520:00225+75=300第三次发船15020:45225+150=375第四次发船22521:30225+225=450第五次发船30022:00300+150=450第六次发船30022:45300第七次发船15023:30150第八次发船0图一运行结果图一运行结果5.2问题二模型的建立与求解 在问题二中,我们所要求的两个未知变量是游轮数量和游轮的载客量,为了简化题目思想,我们依旧使用用问题一解法的数学思想之一——贪心算法,依旧贪心选择游轮的载客量为满载。那么便只剩下游轮数量这一个未知量,又有问题一可知,在不浪费游轮数量的情况下,游轮公司最多只需要8艘游轮即可,所以游轮的数量是在2~8艘的范围之内,只要把尽可能地缩短游客的等待时间,就能找出游轮数量的最优解,对此我们以C#为脚本语言借助于Unity建立了一个关于游轮数量和游客等待时间的模型,控制其它变量不发生改变,只改变游轮的数量从而对比分析出游客等待时间最少时的游轮数量,即游轮数量的最优解,以下是我们运行代码所得到的结果:图三图三游轮数量为3时图二游轮数量为2时图四游轮数量为图四游轮数量为4时图五游轮数量为图五游轮数量为5时图六游轮数量为6时图六游轮数量为6时通过对比以上结果发现,当游轮的数量为2艘时,游客存在等待时间,当游轮的数量为3艘以上,游客不存在等待时间,而为了提高游轮的利用率,就无须超过3艘以上的游轮数量,因此,我们最后选择三艘游轮,一下是这三艘游轮的航程:表格表格2游轮航程5.3问题三模型的建立与求解5.3.1第一问模型的建立与求解 由于题目再次附加了游客存在等待时间的条件,因此,在这种条件下必定会有游客离开所造成的损失,所以我们要做的就是减少游客的离开。因为游轮只有一艘,所以我们这次控制载客量的改变,找到游客量损失最少对应的载客量。为了更快地找出结果,我们采用离散变量的方式,分别控制载客量为150、140、130、120、110、100、90,对应了一艘油轮一天之内的载客量如下表:表格表格3对比结果观察以上结果发现,当游轮的载客量为150人即满载时,一天之内游客因为未等待到游轮而离开的人数最少,所以我们选择游轮的载客量为150人。以下表格是这艘游轮的航程:表格表格4游轮航程下面是程序运行的结果:图图7运行结果5.3.2第二问模型的建立与求解 对于多艘船的考虑问题,我们依旧采用了控制变量的思想,控制变量的过程中,我们发现:如果继续让游轮满载的话,最后还会剩下一部分人,而这部分人实际上接近游轮满载的60%,所以我们降低了船的载客量为140,因为此时恰好剩余的人数超过满载的60%,还可以让游轮再次启航,而再次对游轮数量进行控制变量,发现游轮2艘和三艘的时候,游轮公司一天的载客量是相同的,都是1250人,但二者不同的是,当游轮数量为2艘时,期间游客还存在等待时间。具体情况如下表所示:表格5游轮数量为3艘的航程表格6游轮数量为3艘的航程经过对比发现,当游轮数量为三艘时,游客不存在等待时间,大大提高了游客的满意度,因此我们最终选择三艘游轮。以下是我们的运行结果:图九游轮为3图九游轮为3艘的等待时间图八游轮为2艘的等待时间模型评价优点:在本模型,运用了分析和对比,能够较好地选择出更加符合生活实际的游轮调度方案,既能够大大提高人的满意度,有能够降游轮公司格外的开支。而且我们使用贪心算法的数学思想,而只需要考虑在当前状态下是否是最优的解题方式,因此目的性更强,在解题的时候也更有目标,更准确,更快捷。缺点:我们所建立的模型所使用的数学方法较少,思维方式也比较局限,考虑的影响因素较少,在处理问题时可能存在一些误差。参考文献[1]杨子《贪心算法在生活中的应用》[2]李学文,李炳照,王宏洲《数学建模优秀论文精选与点评》[3]种艳秋,吕闯,徐坤,谭纯《大学生数学建模竞赛对信息素养水平的影响

[4]SARS数学建模优秀论文附录Unity主要程序:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassgetman:MonoBehaviour{publicGameObject_ship0;publicGameObject_man0;publicboolk=false;//模型开关publicboolwait=false;//等待开关——第三题publicintshipnum=1;//船只数量publicintshiphaveman=0;//船上等待人数publicintsleeptime=0;//码头游等待时间publicintshipsleeptime=30;//船只等待时间publicintshipgetman=150;//游船载客人数【90-150】publicinthaveman=0;//码头等待人数publicinthavetime=0;//游客码头总等待时间publicinttime=0;//现场时间【0-240】publicintshiptimes=0;//发船次数publicintallman=0;//总游览人数publicbool[]ship=newbool[8];//8艘船publicint[]ship_sleeptime=newint[8];//8艘船的冷却cdvoidUpdate(){if(Input.GetKeyDown(KeyCode.A))//先按下A键脚本开始执行{k=true;//脚本开关打开Debug.Log("程序开始了");Debug.Log(time);}if(k)//按键按下{time++;//时间增加boolt=false;//开关tfor(inti=0;i<shipnum;i++){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论