2008年全国大学生数学建模c题 一等奖
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
承诺书
我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写): C题我们的参赛报名号为(如果赛区设置报名号的话):
所属学校(请填写完整的全名):晋城职业技术学院
参赛队员 (打印并签名) : 1. 李发(06数学教育班)
2. 沈斌(06数学教育班)
3.李晋斌(06数学教育班)
指导教师或指导教师组负责人 (打印并签名):崔娜(国家一等奖)
日期: 2008 年9 月21 日赛区评阅编号(由赛区组委会评阅前进行编号):
编号专用页
赛区评阅编号(由赛区组委会评阅前进行编号):
全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):
地面搜索模型
【摘要】
本文主要解决的是给定人数的队伍,在最短的时间内完成给定区域的搜索任务。
在问题一中,首先利用动态规划先将要解决的问题分成两步:确定单位时间内所有队员同时搜索最大的面积和队伍并排行进的从起点到终点的最短路径。
对于第一步,分析得到队员以40m的间隔并排行进,此时单位时间内所有队员同时搜索的面积最大。
对于第二步,为了使所用时间最短,所以要尽量减少重复搜索,尽量减少弯道搜索,确定两点之间的最佳路线。
在只考虑搜救速度的情况下,在以搜救路线最短为主要因素,通过建立线路选择模型,要求搜索所用时间最短、用人最少的情况下,通过进行建立最短路线模型、最小花费函数,从而得到最佳路线。
通过运用图的遍历和MATLAB编程,由已知数据运算得到最佳搜索路线。
在同时考虑搜索可探测半径、平均速度、通讯半径时,沿用此模型思想,算法确定最佳路线,如图4。
分析得到由20人完成搜索用时49.6h。
为了在48小时内搜索完全部区域,采用枚举法,采用和上面类似的分析过程,可得到21人可在48小时内完成搜索。
对于问题二,分析过程类似,只是对50个人进行一个分组的问题,要使得在相同的时间内,三组同时搜索的搜索面积最大。
将人数分成人数较多且人数相同的两个组和人数较少的一个组,人数相同的组搜索给定区域中对称部分的较大面积,在人数多的组完成搜索任务的同时,使人数少的组完成除去两个对称面积后剩余的面积。
使三组之中费时最长的组所用时间最短,建立目标函数,最后求得可在20小时内完成给定区域的搜索任务。
关键词:动态规划,图的遍历,最短路径,目标函数,约束
一、问题的背景及重述
1.1 问题的背景
5.12汶川大地震使震区地面交通和通讯系统严重瘫痪。
救灾指挥部紧急派出多支小分队,到各个指定区域执行搜索任务,以确定需要救助的人员的准确位置。
在其它场合也常有类似的搜索任务。
在这种紧急情况下需要解决的重要问题之一是:制定搜索队伍的行进路线,对预定区域进行快速的全面搜索。
通常,每个搜索人员都带有GPS 定位仪、步话机以及食物和生活用品等装备。
队伍中还有一定数量的卫星电话。
GPS 可以让搜索人员知道自己的方位。
步话机可以相互进行通讯。
卫星电话用来向指挥部报告搜索情况。
1.2 问题的重述
有一个平地矩形目标区域,大小为11200米×7200米,需要进行全境搜索。
假设:出发点在区域中心;搜索完成后需要进行集结,集结点(结束点)在左侧短边中点;每个人搜索时的可探测半径为20米,搜索时平均行进速度为0.6米/秒;不需搜索而只是行进时,平均速度为1.2米/秒。
每个人带有GPS 定位仪、步话机,步话机通讯半径为1000米。
搜索队伍若干人为一组,有一个组长,组长还拥有卫星电话。
每个人搜索到目标,需要用步话机及时向组长报告,组长用卫星电话向指挥部报告搜索的最新结果。
现在有如下问题需要解决:
1.假定有一支20人一组的搜索队伍, 拥有1台卫星电话。
请设计一种你认为耗时最短的搜索方式。
按照你的方式,搜索完整个区域的时间是多少? 能否在48小时内完成搜索任务? 如果不能完成,需要增加到多少人才可以完成。
2.为了加快速度,搜索队伍有50人,拥有3台卫星电话,分成3组进行搜索。
每组可独立将搜索情况报告给指挥部门。
请设计一种你认为耗时最短的搜索方式。
按照你的搜索方式, 搜索完整个区域的时间是多少?
二、模型假设
2.1 假设搜索区域天气状况良好,不影响搜救速度
2.2 假设搜救人员在搜救过程中不休息,不停顿(在遇到受伤人员时,立即用步话机报告,不耽搁时间)。
2.3 假设20个人按顺序排开,每两个人之间可以部分重合,但不能留有空隙。
三、符号说明
i S ——表示第i 人的搜索的面积, 220*20i S m π=;
,1i i d +——表示第i 个人与第i+1个人的距离;20≤,1i i d +≤40 (,)i i x y ——表示每个人的坐标,1,2,...,20i =;
r ——表示每个人的搜索半径是20m ;
,A B ——分别表示矩形区域的长和宽,11200,7200A m B m ==;
1v ——表示搜救人员搜索时的平均速度,1v =0.6s m ;
2v ——表示搜救人员不搜索时的平均速度,2v =1.2s m ;
()
0,1,2,320ig iZ i t t T --=------ic iz iG 总总
--表示拐弯花费的时间(i=0,1,2,3)
--表示走所有重复的路所花费的时间(i=0,1,2,3)--表示走非重复直线所花费的时间(i=0,1,2,3)
表示拐弯花费的总时间表示走所有非重复直线所花费的总时间(i=0,1,2,3)表示个人完成搜索任务所花费的总时间表示50个人完成搜索任务所花费的总时间
t t t t g
s --表示20个人走一个方格所搜索的宽度
1
oz t --表示走竖直方向宽度相等的直线所花费的时间
2
oz t
--表示走竖直方向宽度与其它区域不相等的直线所花费时间 3
oz t --表示走竖直方向宽度相等的直线所花费的时间
--oz4
t
表示走竖直方向宽度与其它区域不相等的直线所花费时间
四、问题分析
问题一:
对于20人一组的搜索队伍,拥有一台卫星电话,要实现搜索完11200m*7200m 区域的耗时最短,则要求在单位时间内搜索最大的面积,然后选择最短的路线,从中心点出发到短边中点的中点,在扫过全部的区域的前提下,经过的路程最短。
所以,解决第一问的问题,转化成一个动态规划的问题和图的遍历问题。
总体上是一个动态规划的问题,先求得在单位时间内,20人同时搜索,可能搜索的最大面积;第二步,单位时间内20人搜索过的面积看成一个整体,让这个整体从出发点到终点,经历的时间最短,并且要求,经过整个区域。
对于第一步,用最优化的知识求得最优解。
每个人搜索区域可视为
20m半径的一个圆,根据求得的结果,这20个圆在一条线段上,且相互之间是相切的关系。
这样,当一个人搜索完半径为20m的圆的同时,20人扫过的面积最大,近似为一个800*40的矩形。
这时,第一步达到最优。
第二步,将这个矩形看成一个点。
整体区域可分成14*9个800*800的正方块,将800*800每一个正方块,看成一个点。
这个问题转化成从起点到终点,经过每一个点,但是要尽量减少重复,求最短路的问题。
如果求得这时完成搜索全部区域的时间超过48小时,求增加人数,采用枚举法,每增加一人,按照上面的思路重复这个过程,可求得需要增加的最少人数。
问题二:
将50人分成三组,三组的人数分别为20,20,10。
整个区域还是分成14*9个格。
因为有两组人数为20,所以,将总体格子,以起点和终点的连线为对称轴分成对称的两部分,让20人在分成的半个区域中单位时间内搜索的面积最大,要求不重复,但是,这样是不可能搜索完整个区域内,总会有一部分面积是扫不到的。
假设这块面积正好在对称轴附近,并且呈线性结构,这时由10人的这组在20人完成他们的搜索面积的时间内,搜索完这块区域。
20人搜索完半个整体区域的方法和第一问的处理方式类似。
五、建立模型及求解:
问题一:
对于20人一组的搜索队伍,拥有一台卫星电话,要实现搜索完11200m*7200m区域的耗时最短,则等同于在单位时间内20人的搜索面积总和最大。
在这个过程中,要注意一点,20人中的任意两个人之间的距离不能超出步话机的通讯直径2000m。
这样问题就转化成一个求最大值的优化问题。
假设20人未移动,即各自停留在原地搜索,求20人可搜索到的最大面积。
为使单位时间内搜索的面积最大,假设20人位于同一条直线上,且搜索的方向与这条直线垂直。
将20人线形排列,顺次编号。
考虑20人中的任意相邻2人之间的位置关系,设考虑第i个人与第i+1个人之间的关系。
根据问题中描述的,两个人的搜索面积可以部分
d,求出他们重合的部分的重合,但它们之间不能有空隙。
设相邻两个人之间的距离为
i
面积,用2人各自的搜索面积之和减去它们重合部分的面积,即为2人在不移动时搜索过的面积,设面积为目标函数,建立模型
max 22021
12arccos 2242i i i d i r r
d s r ==⨯⋅-
∑ s.t.
20
1
2000i
i d
=≤∑,
2040i d ≤≤ 求得的最优解为40i d =,1,2,20i = 。
这时,20人可同时搜索的最大面积为800m ,2i d r =,也就是说两个人之间最远的距离就是40米,即搜救队员按自己的搜索半径所围成的圆相接排成一列,如图1。
图1
图1中,每个小圆代表一个人的搜索范围,相邻的两个圆是相切的,蓝线为20人所站的直线,箭头代表前进方向。
在行进中,单位时间内,这些圆扫过的面积等同于中间的线段(队伍的宽度)所经过的面积,所以,下面我们在考虑队伍行进时,考虑该线段沿着垂线方向,如何行进路程最短。
下面考虑将总区域分格。
A=11200m,B=7200m,考虑A 和B 的最大公约数,求得为800,而800恰好为20人组成的队伍宽度。
所以,我们以800m*800m 为一格,把面积为A*B 的矩形区域划分成一张14行9列的图表。
题目转化为以A*B 的中心O 点为出发点,到左侧短边的中点S 点的最短路程,要求要经过表中的所有格。
要使得所用总时间最短,在搜索速度不变的前提下,等同于从O 到S 点的总路程最短,这就要求行进中尽可能的多采取直线段走法,弯道的个数要尽量的少。
因为,过弯道时经过同样的路程所用时间要多。
注意到,表格是以SO 为对称轴的对称图形,这样可将该表格分成上下两个对称部分和中间的对称轴。
对于对称部分,只分析其中一个部分即可,这样,进一步使问题简单化。
下面先给出我们最后的分析结果的图示, 如图3(绿色圆圈表示出发点,红色圆圈表示集结点,灰色表示搜索路径,蓝色表示重合路径,箭头表示队伍的搜索方向)。
从o 点出发,沿绿色箭头方向行走,行走的过程中20人的队伍是并排行进,行进速度
1v =0.6s m (以这种方式行进,可以在单位时间内搜索的面积最大)
,到弯道处时,让队伍行进到每一个小格子的最外边,然后,以纵队方式行进,这时行进速度为2v =1.2s
m ,
队伍只行进不搜索。
为了,减少搜索时间,要尽可能的减少重复搜索面积。
(1) 按如图3所示的方法行走,,在整个过程中,可以分为三部分:
1、非重复拐弯花费的时间0g t ;
2、重复走过的路花费的时间0c t ;
3、走非重复直线所花费的时间0z t 。
建立目标函数
min =min max min og oc oz
og ox oc T t t t t t t =++++
. 112007200
112009
0.6
ox og ox s t S S t +=⨯⨯≤
720014
0.6
og t ⨯≤
搜索队伍的拐弯方法是:在这种走法中,在拐弯上花费的时间少,共有十个弯,每个弯上花费的时间:
0g t =
v
s g 2
=
2
.1800
s , 则, 0G t =10*0g t =10*
2.1800s=20000
3
s ,
所以,在拐弯上花费总时间为
20000
3
秒; 在整个过程中重复的路程所用的时间为,
0c t =
2
6*g
s v
=
6*800
1.2
s =4000s 所以走重复路所花费的时间为4000s 。
走非重复直线所花费的时间为:0z t ,
0z t =
6
.0800
*(6+13+13+13+14+8+13+13+13+13+7)=168000s. 那么, t 总===0G t +0c t +0z t =
20000
3
s+4000s+168000s=3536000s ≈49.6h
所以,搜索完整个区域共用49.6h 。
(2)那么,该队伍不可能在48小时内完成任务,需要增加人员,采用枚举法分析。
先考虑,增加一人的情况:
按如图4所示的方法行走,,在整个过程中,可以分为五部分:
1、非重复拐弯花费的时间0g t ;
2、重复走过的路花费的时间0c t ;
3、走非重复水平方向直线所花费的时间0z t 。
4、走竖直方向宽度相等的直线所花费的时间1oz t
5、走竖直方向宽度与其它区域不相等的直线所花费时间2oz t
建立目标函数
12
12
min =min max min max max og oc oz oz oz og oz oc oz oz T t t t t t t t t t t =++++++++
. 112007*********
0.6
oz og oz s t S S t +=⨯⨯≤
720014
0.6
og t ⨯≤
搜索队伍的拐弯方法是:在这种走法中,在拐弯上花费的时间少,共有八个弯,每个弯上花费的时间:
0g t =
v
s g 2
=
840
1.2
s , 则, 0G t =8*0g t =8*
840
1.2
s=5600s , 所以,在拐弯上花费总时间为5600秒;
在整个过程中重复的路程所用的时间为,
0c t =[84028404840
2(
)0.6 1.20.6
⨯⨯⨯++]s=12600s 所以走重复路所花费的时间为
12400
3
s 。
走非重复水平直线所花费的时间为:
0z t =
840840840(1120084013)440.6 1.2 1.2+-⨯⨯+⨯+=28000
3
s . 走竖直方向宽度相等的直线所花费的时间:
3
oz t
=
11200(1120084013)
81456000.6
s s --⨯⨯=
走竖直方向宽度与其它区域不相等的直线所花费时间为:
oz4
t =11200
(72008408)2 1.2
s --⨯=51201.2s =280003s 那么,
t 总===0G t +0c t +0z t +oz3t +oz4t =5600s+12600s+
28000
3
s +145600s +
280003s =547400
3
s ≈50.69h 因此,搜索完整个区域共用50.69h 。
所以,21个人在48小时之内不能完成。
,
那么我们再试22人搜索,
按如图5所示的方法行走,,在整个过程中,可以分为五部分:
t;
1、非重复拐弯花费的时间
0g
t;
2、重复走过的路花费的时间
0c
t。
3、走非重复水平方向直线所花费的时间
0z
t
4、走竖直方向宽度相等的直线所花费的时间
3
oz
t
5、走竖直方向宽度与其它区域不相等的直线所花费时间
oz4
建立目标函数
12
34min =min max min max max . 112007********* 0.6og oc oz oz oz og oz oc oz oz oz og oz T t t t t t t t t s t S S t t t =+++++++++=⨯⨯≤
720014
0.6
og t ⨯≤
搜索队伍的拐弯方法是:在这种走法中,在拐弯上花费的时间少,共有八个弯,每个弯上花费的时间:
0g t =
v
s g 2
=
880
1.2
s , 则, 0G t =8*0g t =8*
8801.2s=17600
3
s , 所以,在拐弯上花费总时间为
17600
3
秒; 在整个过程中重复的路程所用的时间为,
0c
t
=
11200
11200(1120088012)21.2
s --⨯-
=124003
s
所以走重复路所花费的时间为
12400
3
s 。
走非重复水平直线所花费的时间为:
0z t =
7200
0.6
=12000s. 走竖直方向宽度相等的直线所花费的时间:
3
oz t
=
880
1280.6
s ⨯⨯=140800s 走竖直方向宽度与其它区域不相等的直线所花费时间为:
oz4t =
88088026400
821.20.63
s ⨯+⨯= 那
么,
t 总===0G t +0c t +0z t +oz3t +oz4t =
176003s+
124003s +12000s+140800s+26400
3
s ≈47.67s=所以,搜索完整个区域共用47.67h 。
问题二:
为了加快速度,我们将50人分为3组,第一组20人,第二组20人,第三组10人。
我们将14*9的方格以起点和终点的连线为对称轴分成对称的两部分。
和第一问的处理方式相似,第一组、第二组分别向两边搜索,行进路线如图所示,第三组搜索中间剩下的部分。
在这个搜索的过程中,第一组和第二组所搜寻的范围位于对称轴两侧,按如图4所示方法搜寻:(绿色圆圈表示出发点,红色圆圈表示集结点,黑色虚线表示对称轴,对称轴上方的灰色带表示第一组的搜索路径,对称轴下方的灰色带表示第二组的搜索路径, 蓝色表示第三组的搜索路径,箭头表示队伍的搜索方向)。
第一组:
分析的行进过程,要求从绿点出发,在遍历整个格子的上半部分之后到达红点,可视为一个图的遍历问题。
在整个搜索过程中,可以分为二部分:1、拐弯花费的时间t g 1;2、走直线所花费的时间t z 1。
t g 1=
v s g 2
=
2.1800s , 则,t G 1=6*t g 1=6*2
.1800
s=4000s 因此,在拐弯上花费总时间为4000秒;
走直线所花费的时间为:t z 1,
t z 1=
v
s g 1
=
6
.0800
*(7+3.5+13+13+13+1.5)=68000s. 那么,
T
总
1=t g 1+t z 1=(4000+68000)s=72000s
所以,搜索完该组的整个区域共用72000s 。
第二组:
由于第二组在整个过程中所走的路线和第一组所走的路线关于对称轴对称, 所以,
T 总2=T 总1=72000s 。
第三组:
在整个过程中,可以分为三部分:1、拐弯花费的时间t g 3;2、走重复区域所花费的时间t cf 3;3、走直线所花费的时间为t z 3。
t g 3=
v
s g
22
=
2.1400s , 则, t G 3=4*t g 3=4*2
.1400s=34000
s ;
因此,在拐弯上花费的 时间为
3
4000
秒。
走重复区域所花费的时间t cf 3,
t cf 3=
s g
2
=
2
.1400
s , 所以, t CF 3=(5+14)*t cf 3=19*
2
.1400s=319000
s
因此,走重复区域所花费的时间为3
19000
秒。
走直线所花费的时间为。
t z 3=
v
s g
21
=
6
.0400
s , 所以, t Z 3=(12+24+24+12+12+12)*t z 3=96*
6
.0400
s=64000s 因此,走直线所花费的时间为64000秒。
总共所花的时间应是111(,)min max 64000t s T T T T T ===总2总3总
总2总(组,组2,组3),=20h
所以,这50个人完成任务所用的时间是20个小时
六、模型的评价及改进
本论文着重考虑在搜寻过程中,单位时间内搜索面积最大且用时最短的问题,针对这一模型给出了一种新的方法。
所以本模型从实际情况出发,在搜索过程中能很好的反映灾区的实际情况。
但是我们在整个过程中忽略了其它因素对搜救任务的影响,如队员不休息,一直处于搜索状态的话,可能体力不支导致搜索速度减慢等。
那么我们在这方面将要改进。
附录
nodes = [(1:24); 100*rand(2,24)]';
segments = [(1:17); floor(1:0.5:9); ceil(2:0.5:10)]'; figure; plot(nodes(:,2), nodes(:,3),'k'); hold on;
for s = 1:17
if (s<=10) text(nodes(s,2),nodes(s,3),[' ' num2str(s)]);
end
plot(nodes(segments(s,2:3)',2),nodes(segments(s,2:3)',3),'k');
end
[d,p]=dijkstra(nodes,segments,1,10)
for n = 2:length(p)
plot(nodes(p(n-1:n),2),nodes(p(n-1:n),3),'r-.','linewidth',2);
end
hold off;
参考文献
[文献 1]姜启源谢金星叶俊,数学模型(第三版),高等教育出版社,2003年。
[文献 2]蔡琐章数学建模中国林业出版社2003年7月。
[文献3]解放军信息工程大学韩中庚数学建模方法及其应用高等教育出版社第220-238页,2005年。