建模报告.docx
- 文档编号:6719281
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:9
- 大小:105.55KB
建模报告.docx
《建模报告.docx》由会员分享,可在线阅读,更多相关《建模报告.docx(9页珍藏版)》请在冰点文库上搜索。
建模报告
《数学建模》论文
学院计算机科学与工程学院
学号1130307
姓名
任课教师黄正刚
成绩
年月2015年5月15日星期五
摘要
本文是关于一篇修建学校的选址问题的数学建模案例。
首先,本文提出了问题的背景:
在不同的居民点有着不同的学生人数,以及各个居民点的距离也是不同的,要使学生所走的平均路程最少,就应该决策在哪里修建学校。
针对这个问题,最好是采用图论中的理论,建立模型查找最短路径,本文C#语言,将各个居民点用相应的节点来表示,不过在模型建立过程中,节点之间有不同的权值,应该综合其他因素择优选择。
模型的求解可以使用VS2010编程软件,方便使用。
通过此次建模,可以将此模型应用于新农村建设中的居民点学校修建地点选择问题中去。
关键词:
最短路径、模型、最优决策、模型求解。
关于修建学校选址问题的数学模型
一、问题重述
已知有6个居民点(编号为
),其中每两个居民点之间的边长(公里)以及每个居民点要上学的学生人数(人)如下表:
表1
0
3
3
0
2
1.5
2
0
2
6
2.5
2
0
3
1.8
6
3
0
1.5
2.5
1.8
0
学生人数
6
4
14
2
10
2
注:
表1中空格均表示相应的两个居民点之间无边。
政府计划在这6个居民点当中选出一个修建一所学校,请建立数学模型确定最佳选址方案。
(要求不能用穷举法)。
二、问题分析
这是一个关于如何选取最佳地点问题,一共有6个居民点可以选择,各个居民点之间的距离是不一样的,需要找到各个居民点之间的最短路径,比如V1和V3之间没有通路,但是可以通过其他居民点到达V1,所以应当找到最短路径让学生所走的路程之和最短。
分别假设学校修建的地点在V1~V6,来找到最短路径,而且计算出每个方案学生一共要走多少路,最终选择最适合的方案。
三、
模型建立
0
030
2
1.526
02.50
3
1.80
通过此图可以清楚的描述各个居民点的关系。
因此建立此图可以较为方便的找到各个居民点之间的最短距离。
四、模型求解
根据模型的建立,编程实现(C#语言)查找最短路径,得到各个居民点到各个居民点的最短距离为如下结果。
用一个表格表示出来为:
V1
V2
V3
V4
V5
V6
V1
0
3
5
6.3
9.3
4.5
V2
3
0
2
3.3
6.3
1.5
V3
5
2
0
2
5
2.5
V4
6.3
3.3
2
0
3
1.8
V5
9.3
6.3
5
3
0
4.8
V6
4.5
1.5
2.5
1.8
4.8
0
学生人数情况:
V1
V2
V3
V4
V5
V6
6
4
14
2
10
2
若学校在V1,则学生一共走的路程为:
0*6+3*4+5*14+6.3*2+9.3*10+4.5*2=196.6公里。
若学校在V2,则同理可得学生一共走的路程为:
315.2公里。
若学校在V3,则同理可得学生一共走的路程为:
412.2公里。
若学校在V4,则同理可得学生一共走的路程为:
524.8公里。
若学校在V5,则同理可得学生一共走的路程为:
691.4公里。
若学校在V6,则同理可得学生一共走的路程为:
811.0公里。
即为:
由此可得:
当学校在V1居民点时,学生所走的路程最少,则应该在V1修建学校。
五、结果分析
由结果显示要使学生走路最少,则要在v1居民点建立学校。
六、模型推广
由此模型,可以推广到新农村建设当中去,在西部大开发之中,很多山区孩子不能上学,在修好居民点后,就可以用此方法选择一个好的位置修建学校,使尽可能多的孩子可以上学。
如今的居民点模式已经进入农村,而且也得到了较好的推广和支持,新兴学校势在必行,所以很有必要将此模型推广到实际生活当中去。
七、参考文献
(1)阎慧臻.《关于创意平板折叠桌的数学模型》.[M]
(2)叶其孝.大学生数学建模竞赛辅导教材.[J].机械工业出版社,2004年
C#实现最查找短路径核心算法:
///
///寻找起始节点到目标节点的最小路径,此处采用递归查找。
目标节点固定,起始节点递归。
///
///
///
///
///
///
///
///
privatestringFindMinx(GNodesrc,GNodedest,refintminx,intstartDist,intsrcRank,stringpath)
{
//string[]paths=
intsRank=src.Rank;//dest.GetRank();
inttmpLength,tmpRank;
stringtmpPath=null;
stringgoalPath="";
stringtmpPath1,tmpPath2,tmpNodeName;
tmpPath1=","+path+",";
tmpPath2=","+src.Path+",";
foreach(DNodedninsrc.LD)
{
tmpPath=path;
dn.CurrNode.SetRank(src);
tmpRank=dn.CurrNode.Rank;
tmpNodeName=","+dn.CurrNode.Name+",";
//扩散级别大于等于目标级别并且是未走过的节点。
//haddeletetmpRank>=srcRank
//if(tmpRank>=srcRank&&path.IndexOf(dn.CurrNode.Name)==-1&&src.Path.IndexOf(dn.CurrNode.Name)==-1)
if(tmpRank>srcRank&&tmpPath1.IndexOf(tmpNodeName)==-1&&tmpPath2.IndexOf(tmpNodeName)==-1)
{
tmpLength=dn.Distance+startDist;
if(dn.CurrNode.Equals(dest))
{
if(minx>tmpLength)
{
minx=tmpLength;
tmpPath+=","+dn.CurrNode.Name;
goalPath=tmpPath;
}
elseif(minx==tmpLength)
{
tmpPath+=","+dn.CurrNode.Name;
goalPath=tmpPath;
}
}
else
{
if(tmpLength { tmpPath+=","+dn.CurrNode.Name; tmpPath=FindMinx(dn.CurrNode,dest,refminx,tmpLength,srcRank,tmpPath); if(tmpPath! ="") goalPath=tmpPath; } } } } returngoalPath; } 计算当学校在各个居民点时学生应该走的最短路程程序: #include voidmain() { inti=0; intj=0; doublea[6][6]={{0,3,5,6.3,9.3,4.5},{3,0,2,3.3,6.3,1.5},{5,2,0,2,5,2.5},{6.3,3.3,2,0,3,1.8}, {9.3,6.3,5,3,0,4.8},{4.5,1.5,2.5,1.8,4.8,0}}; doubleb[6]={6,4,14,2,10,2}; doublesum=0; for(i=0;i<6;i++) { for(j=0;j<6;j++) { printf("%0.1lf",a[i][j]); } printf("\n"); } for(i=0;i<6;i++) { for(j=0;j<6;j++) { sum=sum+a[i][j]*b[j]; } printf("当学校在V%d时,所有学生一共走的路程为: %lf",i+1,sum); printf("\n"); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 建模 报告