数学建模-基于Floyd算法的医院选址实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Flyod 算法的医院选址实现
摘要:以最短距离为最优目标选址的定量技术颇多,其中,最优化规划法及图论方法是研究热点。本设计中阐述了无向网络中选址问题的Flyod 基本模型及其全部顶点间最短路径算法选址的原理,并通过实例探讨了医院选址算法的步骤及C++语言实现的全过程。
关键词:最优化规划,Flyod 算法,医院选址,图论 0.引言
“数据结构”在计算机科学中是一门综合性的专业基础课。“数据结构”的研究不仅涉及到计算机硬件(特别是编码理论、存储装置和存取方法等)的研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。
选址问题,是指为一个和几个服务设施在一定区域内选定它的位置,使某一指标达到最优解。这类问题,在规划建设中经常可以碰到,这里所谓的服务设施,可以是某些公共服务设施,如医院,消防站,物流中心等。也可以是生产服务设施,如仓库,转运站等等。可以认为,选址问题,就是把服务设施与服务对象,反映与统一的网络中,便于对问题进行研究。尽管对选址的目标、要求有不同的评判标准,但是要求服务对象与服务设施之间易于沟通、易于达到,这是一个最基本的要求。
本课程设计为基于Flyod 算法的医院选址的实现,因此在把实际的问题简化为网络模型后,建立约束函数和最终目标函数,运用Flyod 算法求出最优解。例如本次设计中医院选址关心的是如何找到一个社区建立医院使所有的社区到医院的路径之和最短,没有约束函数,目标函数则为
1,21
1
1
min{,,},1,2,,n
n
n
j i j i i i sum V V Vn j n =====∑∑∑ 。
1.需求分析
1.1影响医院选址的因素 1.1.1空间距离
由于建医院的主要目的是收治病人,方便病人就医,使病人能在最短的时间内到达医院接受医治,因此院方必需调查所在地区各大社区到医院的空间距离,即病人到医院的直接距离。此距离受地理条件,城市建筑等社会因素的限制。1.1.2时间距离
必需考虑时间距离。这是病人从发病点到医院所需的时间(最好有80%的病人能在一个小时内到达医院),它受城市交通状况影响较大。在我国城市当前交通不发达的情况下,应十分重视时间距离。近年来,某大城市新建几所大医院的地址,虽然环境安静,地形理想,离社区的空间距离不太长,道路也较好,但唯独交通不便,时间距离长,开诊后病人少,并未减轻其他医院的压力,可谓目前城市新建医院选址的教训。
1.1.3其他因素
建院选址,除考虑上述要求外,还应做到:纳入城市规划,合理布局;环境安静,利于修养;地形理想,便于绿化;公用设施,尽量利用;地质合适,易防污染;运输方便,运费低廉等到,这些条件也应综合考虑。
2.数据结构设计
为了使问题更加具体,更加形象,便于求解,设计了一张网络图如下:
图中的每个节点表示一个社区,一共有42个社区,社区与社区之间的数字为社区之间的距离。要求是要在这42个社区里面选择一个社区建立医院,使其余社区到医院的距离之和最短。
2.1自定义结构体
struct Graph
{
int vexnum;
long arcx[M_vexnum][M_arcnum];
};
其中vexnum为图中的顶点数,在本图中它的值为43(0号单元为用),arcx[M_vexnum][M_arcnum]用来表示任意两个节点之间的距离,初始化的时候把不同顶点间的距离都设为无穷大,相同顶点间的距离设为0。
2.2结点距离矩阵的初始化与赋值
for(i=1;i for(j=1;j { if(i==j) G.arcx[i][j]=0; else G.arcx[i][j]=INFINITY; } 在程序运行的时候再对它们赋值,对于上图对其上三角矩阵赋值为: G.arcx[1][2]=40; G.arcx[1][33]=60;G.arcx[1][34]=45; G.arcx[2][3]=35;G.arcx[2][7]=50;G.arcx[2][9]=62; G.arcx[3][10]=42;G.arcx[3][36]=50; G.arcx[4][5]=10;G.arcx[4][6]=30;G.arcx[4][29]=40;G.arcx[4][30]=70; G.arcx[5][6]=28;G.arcx[5][39]=85;G.arcx[5][40]=38; G.arcx[6][11]=32;G.arcx[6][40]=30;G.arcx[6][41]=48; G.arcx[7][10]=48;G.arcx[7][27]=70; G.arcx[8][14]=36;G.arcx[8][15]=38;G.arcx[8][28]=50; G.arcx[9][27]=40;G.arcx[9][31]=52;G.arcx[9][40]=28; G.arcx[10][12]=52; G.arcx[11][15]=56;G.arcx[11][25]=40;G.arcx[11][27]=48; G.arcx[12][13]=80; G.arcx[13][20]=68; G.arcx[13][27]=50; G.arcx[14][17]=56;G.arcx[14] [23]=50; G.arcx[15][18]=58;G.arcx[15] [25]=46;G.arcx[15][42]=28; G.arcx[16][18]=75;G.arcx[16] [21]=58;G.arcx[16][23]=65; G.arcx[17][23]=52; G.arcx[18][19]=22;G.arcx[18] [23]=45;G.arcx[18][25]=30; G.arcx[19][22]=72;G.arcx[19] [26]=28; G.arcx[20][22]=80;G.arcx[20] [24]=50; G.arcx[21][22]=45; G.arcx[24][26]=30; G.arcx[25][26]=18; G.arcx[26][27]=70; G.arcx[27][40]=32; G.arcx[28][29]=60;G.arcx[28] [42]=32; G.arcx[29][30]=62; G.arcx[30][39]=15; G.arcx[31][32]=50; G.arcx[32][31]=50; G.arcx[32][34]=25; G.arcx[32][35]= 98; G.arcx[32][38]=68; G.arcx[32][39]=62; G.arcx[33][36]=40;G.arcx[33][37]=38;] G.arcx[35][39]=102; G.arcx[37][38]=35; G.arcx[41][42]=26; 因为是无向图,所以V ij=V ji ,得到图完整的邻接矩阵,语句如下: