导航:首页 > 源码编译 > 数学建模人员分配用什么算法

数学建模人员分配用什么算法

发布时间:2023-01-25 18:17:24

① 数学建模算法有哪些

1. 蒙特卡罗算法。 该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。
2. 数据拟合、参数估计、插值等数据处理算法。 比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。
3. 线性规划、整数规划、多元规划、二次规划等规划类算法。 建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。
4. 图论算法。 这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。
5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。 这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。
6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。 这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。
7. 网格算法和穷举法。 两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。
8. 一些连续数据离散化方法。 很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。
9. 数值分析算法。 如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。
10. 图象处理算法。 赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。
以下将结合历年的竞赛题,对这十类算法进行详细地说明。
以下将结合历年的竞赛题,对这十类算法进行详细地说明。
2 十类算法的详细说明
2.1 蒙特卡罗算法
大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。
举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢?随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。
2.2 数据拟合、参数估计、插值等算法
数据拟合在很多赛题中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是98 年美国赛A 题,生物组织切片的三维插值处理,94 年A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理。此类问题在MATLAB中有很多现成的函数可以调用,熟悉MATLAB,这些方法都能游刃有余的用好。
2.3 规划类问题算法
竞赛中很多问题都和数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题,遇到这类问题,求解就是关键了,比如98年B 题,用很多不等式完全可以把问题刻画清楚,因此列举出规划后用Lindo、Lingo 等软件来进行解决比较方便,所以还需要熟悉这两个软件。
2.4 图论问题
98 年B 题、00 年B 题、95 年锁具装箱等问题体现了图论问题的重要性,这类问题算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等问题。每一个算法都应该实现一遍,否则到比赛时再写就晚了。
2.5 计算机算法设计中的问题
计算机算法设计包括很多内容:动态规划、回溯搜索、分治算法、分支定界。比如92 年B 题用分枝定界法,97 年B 题是典型的动态规划问题,此外98 年B 题体现了分治算法。这方面问题和ACM 程序设计竞赛中的问题类似,推荐看一下《计算机算法设计与分析》(电子工业出版社)等与计算机算法有关的书。
2.6 最优化理论的三大非经典算法
这十几年来最优化理论有了飞速发展,模拟退火法、神经网络、遗传算法这三类算法发展很快。近几年的赛题越来越复杂,很多问题没有什么很好的模型可以借鉴,于是这三类算法很多时候可以派上用场,比如:97 年A 题的模拟退火算法,00 年B 题的神经网络分类算法,象01 年B 题这种难题也可以使用神经网络,还有美国竞赛89 年A 题也和BP 算法有关系,当时是86 年刚提出BP 算法,89 年就考了,说明赛题可能是当今前沿科技的抽象体现。03 年B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。
2.7 网格算法和穷举算法
网格算法和穷举法一样,只是网格法是连续问题的穷举。比如要求在N 个变量情况下的最优化问题,那么对这些变量可取的空间进行采点,比如在[a; b] 区间内取M +1 个点,就是a; a+(b-a)/M; a+2 (b-a)/M; …… ; b 那么这样循环就需要进行(M + 1)N 次运算,所以计算量很大。比如97 年A 题、99 年B 题都可以用网格法搜索,这种方法最好在运算速度较快
的计算机中进行,还有要用高级语言来做,最好不要用MATLAB 做网格,否则会算很久的。穷举法大家都熟悉,就不说了。
2.8 一些连续数据离散化的方法
大部分物理问题的编程解决,都和这种方法有一定的联系。物理问题是反映我们生活在一个连续的世界中,计算机只能处理离散的量,所以需要对连续量进行离散处理。这种方法应用很广,而且和上面的很多算法有关。事实上,网格算法、蒙特卡罗算法、模拟退火都用了这个思想。
2.9 数值分析算法
这类算法是针对高级语言而专门设的,如果你用的是MATLAB、Mathematica,大可不必准备,因为象数值分析中有很多函数一般的数学软件是具备的。
2.10 图象处理算法
01 年A 题中需要你会读BMP 图象、美国赛98 年A 题需要你知道三维插值计算,03 年B 题要求更高,不但需要编程计算还要进行处理,而数模论文中也有很多图片需要展示,因此图象处理就是关键。做好这类问题,重要的是把MATLAB 学好,特别是图象处理的部分。

② 数学建模建模分为几种类型,分别用什么法求解

数学建模应当掌握的十类算法
1、蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算
法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法)
2、数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要
处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具)
3、线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多数问题
属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、
Lingo软件实现)
4、图论算法(这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉
及到图论的问题可以用这些方法解决,需要认真准备)
5、动态规划、回溯搜索、分治算法、分支定界等计算机算法(这些算法是算法设计
中比较常用的方法,很多场合可以用到竞赛中)
6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法(这些问题是
用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实
现比较困难,需慎重使用)
7、网格算法和穷举法(网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛
题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好
使用一些高级语言作为编程工具)
8、一些连续离散化方法(很多问题都是实际来的,数据可以是连续的,而计算机只
认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非
常重要的)
9、数值分析算法(如果在比赛中采用高级语言进行编程的话,那一些数值分析中常
用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调
用)
10、图象处理算法(赛题中有一类问题与图形有关,即使与图形无关,论文中也应该
要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab
进行处理)

③ 图论在数学建模中一般用于哪些类型的题

1 最短路问题(SPP-shortest path problem)
一名货柜车司机奉命在最短的时间内将一车货物从甲地运往乙地。从甲地到乙地的公路网纵横交错,因此有多种行车路线,这名司机应选择哪条线路呢?假设货柜车的运行速度是恒定的,那么这一问题相当于需要找到一条从甲地到乙地的最短路。
2 公路连接问题
某一地区有若干个主要城市,现准备修建高速公路把这些城市连接起来,使得从其中任何一个城市都可以经高速公路直接或间接到达另一个城市。假定已经知道了任意两个城市之间修建高速公路的成本,那么应如何决定在哪些城市间修建高速公路,使得总成本最小?
3 指派问题(assignment problem)
一家公司经理准备安排 名员工去完成 项任务,每人一项。由于各员工的特点不同,不同的员工去完成同一项任务时所获得的回报是不同的。如何分配工作方案可以使总回报最大?
4 中国邮递员问题(CPP-chinese postman problem)
一名邮递员负责投递某个街区的邮件。如何为他(她)设计一条最短的投递路线(从邮局出发,经过投递区内每条街道至少一次,最后返回邮局)?由于这一问题是我国管梅谷教授1960年首先提出的,所以国际上称之为中国邮递员问题。
5 旅行商问题(TSP-traveling salesman problem)
一名推销员准备前往若干城市推销产品。如何为他(她)设计一条最短的旅行路线(从驻地出发,经过每个城市恰好一次,最后返回驻地)?这一问题的研究历史十分悠久,通常称之为旅行商问题。
6 运输问题(transportation problem)
某种原材料有 个产地,现在需要将原材料从产地运往 个使用这些原材料的工厂。假定 个产地的产量和 家工厂的需要量已知,单位产品从任一产地到任一工厂的运费已知,那么如何安排运输方案可以使总运输成本最低?
7.最短路已有成熟的算法:迪克斯特拉(Dijkstra)算法
8.计算赋权图中各对顶点之间最短路径,显然可以调用Dijkstra算法。具体方法是:每次以不同的顶点作为起点,用Dijkstra算法求出从该起点到其余顶点的最短路径,反复执行n次这样的操作,就可得到从每一个顶点到其它顶点的最短路径。这种算法的时间复杂度为O(n^3)。第二种解决这一问题的方法是由Floyd R W提出的算法,称之为Floyd算法。(可以解决第一个问题)
9.prim算法、Kruskal算法构造最小生成树(使所有点连通)
10.匈牙利算法、Kuhn-Munkres算法解决人员分配问题
11.Euler回路的Fleury算法(中国邮递员问题)
12.最大流的一种算法—标号法(用标号法寻求网络中最大流的基本思想是寻找可增广轨,使网络的流量得到增加,直到最大为止。)

我的计算机不好,用的是MATLAB,网上很多资料可以网络到。程序好直接网络对应算法搞成C的吧……
算法很多网络能到……

④ 数学建模 分配问题

10/1000=1/100,所以大体上是从100人中选出一个委员来。
因各宿舍的人数均不是100的整数倍,所以,必有一人是从余数中选出的,在余数中,A舍的人数较多,为25,可从A舍中多选一人当委员。
如果是15名委员,15/1000=3/200,所以是从200人中选3人。
这样,从A舍选3人,从B选5人,从C选7人。

⑤ 参加数学建模有哪些必学的算法

1. 蒙特卡洛方法:
又称计算机随机性模拟方法,也称统计实验方法。可以通过模拟来检验自己模型的正确性。

2. 数据拟合、参数估计、插值等数据处理
比赛中常遇到大量的数据需要处理,而处理的数据的关键就在于这些方法,通常使用matlab辅助,与图形结合时还可处理很多有关拟合的问题。

3. 规划类问题算法:
包括线性规划、整数规划、多元规划、二次规划等;竞赛中又很多问题都和规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件,几个函数表达式作为目标函数的问题,这类问题,求解是关键。
这类问题一般用lingo软件就能求解。

4. 图论问题:
主要是考察这类问题的算法,包括:Dijkstra、Floyd、Prime、Bellman-Ford,最大流、二分匹配等。熟悉ACM的人来说,应该都不难。

5. 计算机算法设计中的问题:
算法设计包括:动态规划、回溯搜索、分治、分支定界法(求解整数解)等。

6. 最优化理论的三大非经典算法:
a) 模拟退火法(SA)
b) 神经网络(NN)
c) 遗传算法(GA)

7. 网格算法和穷举算法

8. 连续问题离散化的方法
因为计算机只能处理离散化的问题,但是实际中数据大多是连续的,因此需要将连续问题离散化之后再用计算机求解。
如:差分代替微分、求和代替积分等思想都是把连续问题离散化的常用方法。

9. 数值分析方法
主要研究各种求解数学问题的数值计算方法,特别是适用于计算机实现的方法与算法。
包括:函数的数值逼近、数值微分与数值积分、非线性返程的数值解法、数值代数、常微分方程数值解等。
主要应用matlab进行求解。

10. 图像处理算法
这部分主要是使用matlab进行图像处理。
包括展示图片,进行问题解决说明等。

⑥ 关于数学建模中用到的数学理论和编程算法

关于程序,我建议你用matlab或者mathmaticas,用这类专用数学软件比较好,因为我知道绝大多数人对C及C++的掌握还不至于到能够熟练写出你上述的各种算法(当然一些的简单的可以参考ACM的相关书籍),况且在实际工作中很多科学工作者或是工程师都是用Matlab之类的数学软件,所以我也建议你用。
至于你是工科的(我也是),所以我也能够理解你想学习上述各种算法等的想法,但是我觉得这个真的不太现实,我自己也很爱好数学,在平时我也经常学习各种非自己专业的数学知识,但是实际上你学习了之后也要理解,更何况你要运用它到非常熟练的程度(绝非一般考试可比),所以我认为你就必须要非常有选择的看,而且强烈建议你先做好规划(一定要符合自己实际情况,不要贪心),然后抓紧学。
我看你上面列的,其中组合数学非常难,但是你一定要非常踏实地学好(这个会应用在许多连你自己都想不到的地方),另外图论也是必须的,但这里我建议你先学习《离散数学》中的“图论”,当你以后在运用中如果遇到更高深的理论再去参考专门的图论书籍也不迟。另外微分方程我建议你先学习一些基础的知识即可,因为在建模中大多数情况下我觉得你只要会建立就行了,这块内容不用涉入太深,不然太费时间。至于你后面列的一些算法,这个没办法回避的,但也不是说你要一个个看过来,当然你可以考虑先走马观花地扫一遍,然后在仔细深入地学习集中重要的,相对出现几率大的算法。建议你多多拿题目来练习,在练题的过程中顺带学习相应知识,这样效率比较高。

其他的我也帮不了什么,关键你自己要抓紧,效率要大大提高。最后祝你好运!

⑦ 数学建模公平合理的获奖名额分配

一、 问题的提出
我们曾遇到下面一件事,在校学生200名,其中初一年级103名,初二年级63名,初三年级34名,若选20名发放奖学金,按人数比例分配,三个年级分别为10.3,6.3,3.4,将分配名额取整数分配完19人,剩下一个名额按常规分配给余数大的初三年级。于是三个年级分别占有10,7,4个名额。若选21名发放奖学金,按上述方法计算得三个年级分别占有11,7,3个名额,初三年级反而减少1个名额。故初三年级的学生认为不合理。为解决此矛盾,我们提出研究一种更“公平合理”的名额分配模型,再用计算机高级语言编程实现。
二、建立数学模型
设甲,乙双方人数分别为 ,并分别占有 个名额,则双方每个名额所代表的人数分别为 ,显然当
时,名额分配才是合理。但在一般情况下,此二数并不相等。为相对公平,引入“相对误差”。xi ,△= ,x1,x2分别为甲乙的相对误差。则有 当甲、乙各占n1和n2个名额时,总名额增加1个,应分配给甲方还是乙方呢? 不失一般性,设p1>p2,即对甲方不公平,x1(n1,n2)有意义,再分配1个名额时,可能有三种情况:
,说明甲方增加一个名额后,仍对甲不公平,显然新增的1个名额要归甲。
说明甲方增加1个名额后对乙方不公平,这时应有
说明乙方增加1个名额后对甲方不公平,这时应有

(注:在p1>p2的假设下,不可能出现 情形,即在对甲方不公平的情况下,给乙增加1个名额后,仍对乙不公平。)
若x1(n1 ,n2+1)>x2(n1+1 ,n2),则新增的1个名额应分配给甲方,反之分给乙方。由此结合(1)、(2)、(3)式得

即当(4)式成立时,增加1个名额应分配给甲方,反之分给乙方。设 ,则新增的1个名额应分配给P=max{P1 ,P2}的一方。
我们可将问题推广到更一般:Di方的人数为mi,已占有ni≥1(i=1,2,…,k)个名额,当总名额增加1个时,计算 ,则新增的1个名额分配给Pi值中最大的一方。
三、程序设计
用数组存放各方的人数、各方分配到的名额,各方的P值。为使整个分配公平合理,每方至少有一个名额,故先给各方分1个名额。从第k+1个名额起,每1个名额都为新增的名额,通过计算P值后,将这个名额分配给这k个P值中最大的一个,同时修改这个最大的P值,再分配第k+2个名额,直到名额分完为止,此重复工作用循环语句来实现。为判断名额是否分完,用yfrs记已分配的名额数,q为总名额数,当yfrs<q时继续循环。其Authorware主要程序如下:
主程序如上图。
在祝贺词中有一电影图标,播放一舞蹈,表祝贺。选择交互中,有参研人员,课题内容,研究过程,课题软件和结束子程序。
在参研人员子程序中,显示参研人员的相片,当鼠标指向人名时,显示该同志的相片。

在研究过程子程序中,记录了研究过程的时间段的研究内容,同时显示相关资料图片。

在课题软件子程序中,按我们设计的算法,编写了计算程序。为让计算机能接受输入的数据,利用文本交互方式设计了子程序“输入段”如右图:

在“输入各方人数”中有一计算图标,它是计算分配名额的主要程序,其主要内容如下:
zc:=EntryText
len:=CharCount(zc)
zc1:=""
zc2:=""
ii:=1
weizi:=0
repeat while ii<=len
zc1:=SubStr(zc, ii,ii)
if zc1="," then
sz:=Real(zc2)
weizi:=weizi+1
ArraySet(weizi,sz)
zc2:=""
else
zc2:=zc2^zc1
end if
ii:=ii+1
end repeat
fangshu:=weizi
ii:=1
repeat while ii<=fangshu
ArraySet(ii+fangshu,1)
a:=ArrayGet(ii)
b:=1
c:=a*a/(b*(b+1))
ArraySet(2*fangshu+ii,c)
ii:=ii+1
end repeat
yfrs:=fangshu
repeat while yfrs<q
maxp:=0
kl:=1
l:=fangshu+1
repeat with i:=1 to fangshu
if ArrayGet(2*fangshu+i)>maxp then
maxp:=ArrayGet(2*fangshu+i)
l:=fangshu+i
kl:=i
end if
end repeat
b:=ArrayGet(l)+1
ArraySet(l,b)
a:=ArrayGet(kl)
c:=a*a/(b*(b+1))
ArraySet(2*fangshu+kl,c)
yfrs:=yfrs+1
end repeat
nn:=DeleteFile("aa.txt")
repeat with l:=fangshu+1 to 2*fangshu
ss:=ArrayGet(l)
AppendExtFile("aa.txt",ss)
AppendExtFile("aa.txt"," , ")
end repeat
jieguo:=ReadExtFile ("aa.txt")
通过运行程序可得前面的发放奖学金名额分配方案为一、二,三年级分别分配11,6,4个才合理

这是一个模板。你自己看一下。很容易的哦

阅读全文

与数学建模人员分配用什么算法相关的资料

热点内容
不背单词app单词怎么学习 浏览:479
程序员日常操作搞笑 浏览:379
android检查是否安装 浏览:373
苹果手机编辑pdf文件 浏览:458
android系统名字 浏览:969
安卓手机如何进去有求必应屋 浏览:432
指数除法运算法则底数不同 浏览:894
90压缩干粮09压缩干粮 浏览:516
android线程池框架 浏览:481
手机自带解压能解压哪些文件 浏览:804
linux安装hba驱动 浏览:119
java构造函数new 浏览:668
怎么查家里电器耗电量app 浏览:506
原神一直显示重新连接服务器怎么办 浏览:826
一般用途轴流式压缩机 浏览:926
没学历的怎么学编程 浏览:901
华为的隐藏相册无法加密 浏览:782
联通套餐app怎么设置 浏览:752
关于删除链表的算法描述 浏览:894
标准盘和压缩盘的区别 浏览:47