最短路径编程Word下载.docx
《最短路径编程Word下载.docx》由会员分享,可在线阅读,更多相关《最短路径编程Word下载.docx(41页珍藏版)》请在冰豆网上搜索。
![最短路径编程Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/23/4b791780-313f-4688-a37a-b1eabf6c95a0/4b791780-313f-4688-a37a-b1eabf6c95a01.gif)
如果观众行走线路中的某一段不包含于一个商区的商圈中,则观众不可以到此商区中的商店购物。
4、所有MS具有相同的竞争力。
所有MS的商品种类和每种商品的价格是一样的。
两种MS的区别只在于他们的商品的数量的多少。
对于所有的MS,并不存在这样一种商品,它在这个MS买不到而在另一个MS买得到。
5、对于一个场馆,各个看台的满员率(实际观众数与看台容量之比)是相同的;
每个看台的观众只通过与此看台相对应的出入口出入场馆。
根据此假设,则一个场馆各个出入口的人流量是相同的。
6、所有场馆的满员率相同。
为了确定MS的分布和数量,简化计算,进一步假设,在奥运期间所有场馆均满员。
7、不同看台的观众选择交通方式或就餐方式的比率是相同的。
8、由于奥运会的短期性,可假设MS的成本只与固定投资有关。
9、对于一个商区,每种MS的个数取决与此商区的人流量。
因此,满足人流量的建设MS的方案也会满足分布要求。
10、性别和年龄不会影响人流量和消费欲望。
三、符号说明
1、交通方式T:
A:
私车
B:
出租
C:
公交(东西)
D:
公交(南北)
E:
地铁(西)
F:
地铁(东)
2、餐方式R:
a:
中餐
b:
西餐
c:
商场
3、消费档次:
level(1≤level≤6)
4、商圈i的潜在销售量:
si
5、Ma(Mb):
大MS(小MS)每天可提供的购物总额(单位:
元),
Pa(Pb):
大MS(小MS)每天可接纳的人流量(单位:
人次),
Ca(Cb):
大MS(小MS)建设这种MS的固定投资成本(单位:
Sa(Sb):
大MS(小MS)营业面积(换算单位面积,商区面积为100)
6、area:
每个商区的建筑物最大占地面积
7、x:
大MS的个数;
y:
小MS的个数
8、Cost:
修建所有MS的总成本;
Profit:
总利润
四、问题分析
这是一个规划问题。
其目的是:
根据各个商业区的总人流量和总购买金额确定每个商区里两种MS的类型和数量,使得既能满足顾客的消费需求,又能最大限度降低成本,并且取得最大利润。
基于这样的出发点,根据问题的要求和问题假设,我们分析思路为:
1.根据附录中调查文件的数据,求出观众的交通方式、就餐方式和消费档次的规律;
2.确定最短观众出行线路
把原题图2进行简化,用特殊方法化为一个无向有权图。
并采用Floyd算法求出如下两点之间的最短路径:
乘车点-看台;
看台-就餐点;
就餐点-乘车点。
3.确定每个商业区的人流量和消费总额,由此确定潜在的销售量
根据已经求出的最短路径,确定每个商业区的总的人流量和总的消费金额。
为求出每个商区的购物欲望,根据原题中数据,将1-6档的消费额(非餐饮)转化为1-6档的消费欲望。
对于每一个商圈,通过分析其人流量的换算购物欲望,计算其潜在的销售量。
计算公式如下:
4.确定每个商区两种MS的数目。
结合实际情况,查阅资料确定每种MS的几个可能方案。
对于大小MS的各种组合,用整数规划确定每个商区的两种MS的个数。
那么,使所有商区利润总和最大的两种MS组合,就是最优方案组合。
五.模型的建立与求解
5.1处理问卷调查数据,得出观众在出行方式、就餐和购物方面所反映的规律。
要让MS网点设计可以满足三方面要求,即满足奥运会期间的购物需求、分布基本均衡和商业上赢利,那么在调查表中对此影响最大的无非是三方面的因素:
出行方式、餐饮方式和消费额。
那么分别对三个表进行各项因素的统计,比如对观众在出行方面反应的规律进行统计时,就可以用一个六列的表表示出来,每一列表示选择一种出行方式的人数在某次调查的总人数中所占的比例。
表的前三行的每一行则表示某次调查的相应情况,最后一行则取这三次调查的平均值。
这样得到了三个反应不同因素的规律的表格,并且分别做出其条形图如下所示:
出行方式百分比示意表
公交南北
公交东西
地铁西
地铁东
第一次调查
0.088
0.19429
0.17486
0.17086
0.18771
0.18429
第二次调查
0.091875
0.18594
0.16813
0.17438
0.19062
0.18906
第三次调查
0.091282
0.18846
0.16
0.17231
0.1941
0.19385
三次平均值
0.090386
0.18956
0.16766
0.17252
0.19081
出行方式百分比示意图
餐饮方式百分比示意表
中餐
西餐
商场(餐饮)
0.22371
0.52486
0.25143
0.22625
0.5225
0.25125
0.22436
0.52769
0.24795
三次平均值
0.22477
0.52502
0.25021
餐饮方式百分比示意图
消费额(非餐饮)档次百分比示意表
0—100
100—200
200—300
300—400
400—500
500以上
0.19514
0.238
0.45429
0.089429
0.013429
0.0097143
0.19656
0.255
0.435
0.084062
0.01875
0.010625
0.19179
0.25128
0.43231
0.10282
0.012821
0.0089744
0.19450
0.24809
0.44053
0.092104
0.015
0.0097712
消费额(非餐饮)档次百分比示意图
但这三个表格里的数值均只反应单一的因素所具有的规律,对后面继续的分析并无太大的用处。
于是再进行一次统计,综合考虑三个因素所反应出来的规律,所以再作一个表,由程序对三次调查进行统计,那么得到一个有6(种出行方式)*3(种餐饮方式)*6(种消费水平)=108行的表。
考虑到这个表太大,没有必要实际地打印出来,它只需要留下,为后面的分析作准备,所以只是由程序把它作为一个矩阵变量保存即可。
在对原题Access数据库处理时,我们先把该数据库导出为文本文件,然后载入Matlab。
另外要说明的是,在调查表格里,虽然还有性别和年龄等信息,但我们认为,在对一万多人进行统计的情况下,它们并不会影响最后统计结果的有效性。
所以我们在统计过程中乃至整个设计MS网点过程中,均未考虑这些信息。
5.2计算每个商区的人流量分布和人们的购物欲望。
根据假设和问题一的解答,我们知道任何一个看台i的人都可能选择任何出行方式或者选择任何用餐方式,那么i区的人都有可能通过最短路径经过其他的区,这样,必定给其他的区带来一定的人流量和潜在的购物欲望,把各区的所有可能人流量和购物欲望累积起来就得到各区一天总的人流量和总的消费总额。
带来的具体人流量和购物欲望,我们通过第一题的解答可以估算出。
具体模型构造及解答如下,首先计算任意一个看台的人到他的目的地的最短路径。
我们把原题中的图2进行如下处理:
1)如左图,如果A-D有一条最短路径,则将A点缩短到B点所得到的最短路径必定与原最短路径重合。
那么,对于C点来说,这两条最短路径或者都通过它,或者都不通过它。
基于如上思路,如果我们要分析C点是否在A-D的最短路径上,把A点缩短到B点不仅对原问题的解没有影响,而且会简化计算。
采用这种方法,则我们把原题中的图2简化为下图:
原题图2经过简化后的带权无向图
说明:
1-10表示商业区(看台)A1-A10;
11-16表示商业区(看台)B1-B6;
17-20表示商业区(看台)C1-C4;
21-26表示交通方式A-F;
27-29表示就餐方式a-c;
我们这样处理的好处是:
对商业区,交通方式,就餐方式进行分类计算时便于编程搜索。
相邻两点之间的权值(见附录coor.txt)是通过测量并通过适当处理后得到的。
这样我们就得到了原题图2的带权的无向图并存入计算机,运用Floyd求最短路径的算法,编程(见附录Floyd.m)运行后得到观众三段出行线路所经商区。
第一类:
乘车起点
看台
A1
…
A10
B1
B6
C1
C4
第二类:
就餐终点
第三类:
就餐起点
乘车终点
第一类中任意乘车起点到任意看台若经过某商业区,那么在表格里填1,否则填0,若有两种最短路径可能,则填0.5,为了不出现小数,对所有的数据均乘以2,表2和表3依次类似处理。
举例如下:
商业区
乘车点至看台
(如出租-C4)
就餐点至看台
(如西餐-C4)
就餐点至乘车点
(如西餐-出租)
2
A2
1
A3
A4
A5
A6
A7
A8
A9
B2
B3
B4
B5
C2
C3
运行程序(见附录GetPath.m)得到的结果分别保存为Path2,Path3,Path4。
(Path2保存了任意乘车点至任意看台的所有最短路径,Path3保存了任意就餐点至任意看台的所有最短路径,Path4保存了任意就餐点至任意乘车点的所有最短路径)。
2)计算每个商区的人流量和购物欲望。
对于一支人流,它的人数为people。
它从起点到终点有A条路径长相同的最短路径。
则对于商区m,如果有a(a<
=A)条最短路径通过此商区,则此商区的人流量增加people*a/A人次。
在本题中,1<
=A<
=2。
根据假设可知,对于一个购物欲望为n的人,他选择从乘车点i到达看台k,看完比赛后到就餐点j用餐,用完餐后回到i。
如果在此3段出行线路中,都只有1条最短路径。
此他的出行线路是唯一的一个回路。
在此回路中,如果他经过商区x次(包括重复经过的次数),则对于他所经过的每一个商区而言,他的换算购物欲望为n/x。
进一步的修正得到:
如果从起点到终点有A条最短路径,对于一个商区,如果有a(a<
=A)条最短路径通过此商区,则此每经过此商区一次,此商区被经过的次数增加a/A人次。
那么,要计算商区m的购物欲望,则只要把经过此商区的每一个的购物欲望相加即可。
基于上述思路,我们解答步骤如下:
根据假设,对于每个看台的观众,根据交通方式、就餐方式、消费档次的不同,可分为108类,各类人数所占的百分比是不变的。
那么,对于每个看台的观众出行路线的处理方式是一样的。
因此,下面我们首先考虑一个看台的观众。
对于一个看台的观众,它有108类。
对于每一类观众,都有相同的处理方式。
现在,让我们再次细分问题,只考虑一个看台k,对于选择交通方式i、就餐方式j并且其消费档次为n的观众,由对第1个问题的解答,可得到它的人数百分比per。
对于每一类人流,按照总体思路的要求,可计算出每个商区的人流量和购物欲望。
for每一个看台
for每一类人流
ifper~=0
for每一个商区
人流量=人流量+people*per:
购物欲望=购物欲望+人流量*换算购物欲望;
end
end
经过如上处理,则得到商区的人流量和购物欲望的矩阵C。
人流的换算购物欲望的计算方法:
计算此人流在整个出行回路中,对个商区的访问率visit。
1表示一定会访问;
0.5表示有一半的概率访问;
0表示不会访问。
则此看台这类人流的换算购物欲望buy为:
buy=1/各个商区的访问率之和
这样根据假设和搜索上面的三类最短路径,并由第一题的解答得到,通过某条路径人流量=对每个看台出来的人总数乘以选择一种出行行为的概率;
某个商业区的人流量=所有经过此商业区的人流量的总和;
每个商业区的购物欲望=所有经过此商业区的人的换算购物欲望的总和;
每个商业区的潜在消费总额=所有经过此商业区的人的消费额的总和。
这里,为了简单起见,根据题目说明,个人的消费档次(1-6)依次取为:
50,150,250,350,450,600。
根据假设,我们知道所有的体育场馆都是满员的,即,A的总人数是10万,B的总人数是6万,C的总人数是4万。
把这些数字代入程序(见附录main.m)得到各商业区的总人数流量百分比和总消费金额:
人流量(百万人次)
人流量百分比(%)
总金额(百万元)
0.1483
9.4899
3.1372
0.0752
4.8103
1.5321
0.0772
4.9412
1.5874
0.0837
5.3543
1.8135
0.0901
5.7675
2.2009
0.1755
11.2324
4.9731
0.1103
7.0567
2.5266
0.0793
5.0721
1.6925
1.5224
0.0796
5.0926
1.5880
0.0823
5.2695
2.0857
0.0513
3.2849
1.2998
0.0865
5.5384
2.1167
0.0578
3.6980
1.6390
0.1179
7.5440
4.2384
0.0236
1.5117
0.9570
0.0245
1.5696
1.0180
0.0355
2.2704
1.4987
1.5597
上述表的图形为:
这里实线(下一条)表示各区人流量曲线,虚线(上一条)表示各区的总金额曲线。
从上表和图中我们易知,人流量大的商业区,其所消费的总金额也多,人流量小的商业区,其所消费的总金额也响应少,在人流量最大的两个商业区6区(具体代表位置见前说明),其消费金额也最大,这和实际情况基本吻合。
但总金额曲线和人流量曲线并不是平行的,也就是说,总金额并不与人流量成线形关系,实际生活中也说明了这一点,人流量很大的地方其消费金额并不一定很大。
从整体上看,两曲线的走势基本吻合。
这和实际情况是相符的,说明我们的模型是正确的。
我们用Excel直观表示出了各商业区的人流量的对比图如下所示:
5.3确定两种MS的类型和每个商区每种MS的个数
这实际上是一个整数规划问题。
我们建立了MS最优化规划模型。
详细的建模及求解过程如下:
1.模型求解的参数
(1)两种MS的类型
描述MS类型的参数很多,针对本题,我们选取了4个参数:
每天可提供的购物总额,每天可接纳的人流量,建设这种MS的固定投资成本,营业面积(m2)。
(2)单个商区每种MS的个数。
2.模型中的约束条件:
(1)满足奥运会期间的购物需求
根据我们的假设,认为在奥运会期间每天的人流量是相同的。
则此问题化为:
每天可提供的购物总额应满足奥运会期间每天的购物需求。
在这里,有两种思路:
第1种:
对于每一个商区都满足此要求,即此商区内的所有MS每天可提供的购物总额应满足奥运会期间此商区每天的购物需求。
在此情形下,显然可满足第2种条件。
对于人流量的满足情形与此类似。
第2种:
对于所有的商区,所有MS每天可提供的总购物总额应满足奥运会期间所有商区每天的总购物需求。
在这种情形下,对于每一个商区,并不一定满足第1种条件。
为了简化分析,我们按满足第1种条件的情形进行求解。
(2)分布基本均衡
即大MS和小MS要分布均匀。
分布均匀的MS布局才可以有效地满足人们的购物要求。
根据日常的经验,我们知道,超市的大小是决定可接纳的人流量的最重要因素,而与购物需求影响相应要小些。
只要我们比较以下一个大型的日用百货商店和一个小型的奢侈品商店,对于这点就不难理解了。
因此,我们进行MS布局时,主要考虑人流量的大小。
并且,如果能满足人流量要求的MS布局,我们认为它已经满足了分布均衡的要求。
(3)商业上赢利。
商业上赢利,至少要不亏本。
当然,我们的目标是要使利润最大。
那么,决定利润的要素是什么呢?
我们分析一下一个超市的成本和利润。
首先,建设一个超市,需要投入一定的建设费用,这些费用是一次性的,记为C1。
在运行中,超市的利润为:
利润=营业额*利润率。
对于一般的超市,显然利润具有季节性。
由于固定投资成本C1可折算到每天的运行成本中去,显然,运行时间越长,折算到每天的运行成本中去的固定投资成本就越小。
考虑到奥运会的短暂性(最多18天),因此固定投资成本是一个重要的不能忽略的因素。
综合以上考虑,我们认为,总净利润=每天营业额*利润率*奥运天数-固定投资。
3.模型的建立
对于每种MS,我们认为它由如下四个因素决定:
Ma(Mb):
大MS(小MS)营业面积
我们根据实际情况,通过查阅大量资料,并充分考虑商区的面积、人流量、潜在的购物总额等因素,给出若干种可能方案。
文件LMS.txt保存了大MS的方案;
文件SMS.txt保存了小MS的方案;
(在实际操作中,用户只要把自己的方案存入到上述两个文件即可)
需要说明的是,我们确定两种MS类型的思路是:
第一种思路:
首先给出MS类型的取值范围,然后进行搜索,找出最优解,这是一个简单可行的方案。
第二种思路:
两种MS的类型完全在程序中动态地确定。
但是,一种MS有四个参数,而且参数之间显然有某种联系。
我们并不知道这种联系到底是什么函数关系,但是,它显然不全是线性关系。
因此,要在程序中动态地确定两种MS的类型,是极其复杂的,而且所得出的结果并不能保证很好地满足实际情况。
因此,我们确定两种MS类型采用第一种思路。
对于每个大MS和小MS方案的组合,求出每个商区两种MS个数的最优解(大MS个数、小MS个数、利润),然后考虑所有商区的利润总和,显然,其最大值所对应的MS方案组合是最优组合。
对于每个商区,根据对第2问的解答,其每天应满足的购物总额M(单位:
万员)和每天应满足的人流量P(单位:
人次)是已知的。
根据题目的内容,我们知道每个商区的建筑物最大占地面积area是已知的。
显然,在选定一种MS组合的情况下,对于某个特定的商区,其大MS的个数x和小MS的个数y应该满足如下模型:
max
st
min
注:
N表示自然数集。
根据修改后的定义,它包括0。
此问题是一个整数规划问题,用Matlab与LindoAPI软件求其最优解。
4.模型的求解
运行程序(见附录),其数据由上面所述的LMS.txt和SMS.txt提供,结果表明当Ca=200000,Cb=20000时,总赢利最大,其各商业区的大小MS点个数布置详细情况见附录4。
从模型求解结果来看,是基本吻合实际情况的,因此我们的模型是合理的。
六.模型的评价与改进
6.1模型的优点
1)综合利用了Matlab,LindoAPI等软件进行编程,构造了较多合理的数据结构,分别从图论和整数规划的角度对模型进行了综合求解,并简化了模型。
2)充分考虑各种可能的情况进行建模,并用计算机进行模拟,使模型更加完善科学。
其结果也比较符合实际情况。
3)模型具有较好的通用性,比如,用户只要