




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2004高教社杯全国大学生数学建模竞赛承 诺 书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。我们的参赛报名号为:参赛队员 (签名) :指导教师或指导教师组负责人 (签名): 赛区评阅编号(由赛区组委会评阅前进行编号):2004高教社杯全国大学生数学建模竞赛编 号 专 用 页赛区评阅编号(由赛区组委会评阅前进行编号):全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):奥运会临时超市网点的优化设计摘要:本文运用Matlab软件详细分析了图3的原始数据,求出其规律。为了求出观众最短的出行线路,我们对原题中的图2进行简化处理,得到无向加权图,并运用Floyd算法得到每个看台上的人到其目的地的最短路径。依据此图提出了人流量统计模型:既当各个看台上的人沿着最短路径行进时,根据问题1的求解反映出的规律,统计其所经过的商业区的人流量和潜在消费总额。根据其结果得到如下规律:一般地,人流量大的商业区,其消费总金额也多,人流量小的商业区,其所消费总金额也相应少。人流量最大的是A6区,其消费总金额也最大,但总金额并不与人流量成线形关系。根据人流量和消费总金额的分布规律,考虑两种Ms的成本,我们提出了MS最优化规划模型:所有MS的占地面积之和不能大于商区的使用面积;所有MS所能接纳的客流量要大于等于商区的人流量;所有MS所能提供的购物总额要大于等于商区的购物欲望;目标函数为求最大利润。对于该模型,我们采用Matlab和Lindo软件相结合来进行求解,得出了较好的结果:本文由word软件进行排版,并用运用Matlab进行编程,使用了大量的编程技巧,同时,本文还运用了Excel,Lindo等软件进行处理。一、问题重述根据原题图3的问卷调查数据分析出观众在出行、用餐和购物等方面所反映的规律。由此规律,在原题图2中表示的比赛主场馆的周边地区布置两种类型的MS,并且要求这种MS,在地点、大小类型和总量等三个方面满足奥运会期间顾客的购物需求、分布基本均衡和商业上赢利。二、模型假设1、观众来看比赛的交通方式与看完比赛后离去的交通方式是相同的。2、对于一个观众来说,他一天的出行线路分为三段:(1)选择某种交通方式来到下车地点,下车后沿最短路径原则进入比赛场馆;(2)看完比赛后沿最短路径原则进入就餐场所(中餐馆、西餐馆、商场三者之一);(3)就餐完后沿最短路径原则返回到原来的下车地点,选择相同的交通方式离去。观众没有到其他场地参观等活动。3、 以上三段行走线路中,观众可以到行走路线所经过的商区购物。即:如果观众行走线路中的某一段包含于一个商区的商圈中,则观众可以到此商区中的商店购物。如果观众行走线路中的某一段不包含于一个商区的商圈中,则观众不可以到此商区中的商店购物。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 (1level6)4、 商圈i的潜在销售量:si5、 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.0880.194290.174860.170860.187710.18429第二次调查0.0918750.185940.168130.174380.190620.18906第三次调查0.0912820.188460.160.172310.19410.19385三次平均值0.0903860.189560.167660.172520.190810.18906出行方式百分比示意图餐饮方式百分比示意表 中餐 西餐 商场(餐饮)第一次调查0.223710.524860.25143第二次调查0.226250.52250.25125第三次调查0.224360.527690.24795 三次平均值 0.22477 0.52502 0.25021餐饮方式百分比示意图消费额(非餐饮)档次百分比示意表0100100200200300300400400500500以上第一次调查0.195140.2380.454290.0894290.0134290.0097143第二次调查0.196560.2550.4350.0840620.018750.010625第三次调查0.191790.251280.432310.102820.0128210.0089744三次平均值0.194500.248090.440530.0921040.0150.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)运行后得到观众三段出行线路所经商区。第一类:乘车起点看台A1A10B1B6C1C4第二类:就餐终点看台A1A10B1B6C1C4第三类:就餐起点乘车终点A1A10B1B6C1C4第一类中任意乘车起点到任意看台若经过某商业区,那么在表格里填1,否则填0,若有两种最短路径可能,则填0.5,为了不出现小数,对所有的数据均乘以2,表2和表3依次类似处理。举例如下:商业区乘车点至看台(如出租-C4)就餐点至看台(如西餐-C4)就餐点至乘车点(如西餐-出租)A1002A2001A3001A4001A5001A6002A7001A8001A9001A10001B1000B2000B3000B4000B5000B6000C1200C2000C3000C4220运行程序(见附录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 每一类人流 if per=0 for 每一个商区 人流量=人流量+people*per: 购物欲望=购物欲望+人流量*换算购物欲望; end endendend经过如上处理,则得到商区的人流量和购物欲望的矩阵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)得到各商业区的总人数流量百分比和总消费金额:人流量(百万人次)人流量百分比(%)总金额(百万元)A10.14839.48993.1372A20.07524.81031.5321A30.07724.94121.5874A40.08375.35431.8135A50.09015.76752.2009A60.175511.23244.9731A70.11037.05672.5266A80.07935.07211.6925A90.07724.94121.5224A100.07965.09261.5880B10.08235.26952.0857B20.05133.28491.2998B30.08655.53842.1167B40.05133.28491.2998B50.05783.69801.6390B60.11797.54404.2384C10.02361.51170.9570C20.02451.56961.0180C30.03552.27041.4987C40.03552.27041.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)每天可提供的购物总额(单位:元), Pa(Pb): 大MS(小MS)每天可接纳的人流量(单位:人次), Ca(Cb): 大MS(小MS)建设这种MS的固定投资成本(单位:元),Sa(Sb): 大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 st 注:N表示自然数集。根据修改后的定义,它包括0。此问题是一个整数规划问题,用Matlab与Lindo API软件求其最优解。4.模型的求解运行程序(见附录),其数据由上面所述的LMS.txt和SMS.txt提供,结果表明当Ca=200000,Cb=20000时,总赢利最大,其各商业区的大小MS点个数布置详细情况见附录4。从模型求解结果来看,是基本吻合实际情况的,因此我们的模型是合理的。六模型的评价与改进6.1模型的优点1)综合利用了Matlab,Lindo API等软件进行编程,构造了较多合理的数据结构,分别从图论和整数规划的角度对模型进行了综合求解,并简化了模型。2)充分考虑各种可能的情况进行建模,并用计算机进行模拟,使模型更加完善科学。其结果也比较符合实际情况。3)模型具有较好的通用性,比如,用户只要修改更接近现实的LMS.txt和SMS.txt的数据,就会得到合理的MS的布局。因此能适应同类的问题的各种变化。4)尽管我们假设体育场的看台是满员的,但本模型对不满员时也是适用,此时只需要在主程序中修改w(每个看台的人数)的值即可。6.2模型的缺点1)在实际中,一个顾客经过各个商场的时候,一般是不会把他的总消费量平均的分到每一个商场的,但我们这里是假设为平均的,所以会因此而产生一些误差;2)模型没有考虑奥运会开完后的情况,这会给商家造成一定损失;3)LMS.txt和SMS.txt的数据的获得并没有得到实地验证,可能会给造成一定误差。4)我们总是假设各个看台的人数是一样的,没有考虑其人数不同时的情况。6.3模型的改进1) 进一步简化模型,减少模型的求接规模;2) 增加对模型的约束条件,以适应奥运会后的情形;3) 找出影响MS的总成本各因素之间的关系,使得模型更加准确;4) 考虑各个看台的人数不同时的情况,使得模型更加精确。参考文献1 严蔚敏、吴伟民,数据结构,清华大学出版社,1997。2 重庆大学数学系,傅鹂,龚劬等,数学实验,科学出版社,2000。3 王沫然,MATLAB6.0与科学计算,电子工业出版社,2001。4,海南东方生态旅行社,商场超市,/lyzx/gwzn/sccs.htm,2004.9.17.。5,重庆晨报,北京华联又加入战团 超市巨头大战沙坪坝,/gb/map/2004-09/18/content_353606.htm,2004.9.17.。附录1:源程序主程序1 main.m%clc; %清空命令窗口%clear; %清空内存变量% 载入原始数据文件-load f1.txt; %载入第1次调查表load f2.txt; %载入第2次调查表load f3.txt; %载入第3次调查表% 调查表的各列为:私车、出租、公交(东西)、公交(南北)、% 地铁(西)、地铁(东)、中餐、西餐、商场、消费档次。load LMS.txt %载入大MS方案load SMS.txt %载入小MS方案% 大(小)MS方案各列为:% 第1列:可提供的购物总额(单位:元),% 第2列:服务人流量(单位:人次),% 第3列:固定投资成本(单位:元),% 第4列:营业面积(换算单位面积)load dis.txt; %载入弧长% 第1列:第一个端点。第2列:第二个端点。第3列:弧长。% 常量数据-w=10000; %每个看台的观众数(单位:人)。m1=6; %交通方式种类,共6个,程序中一般用i表示某种交通方式。m2=3; %就餐方式种类,共3个,程序中一般用j表示某种就餐方式。m3=20; %商区数目,共20个,程序中一般用m表示某个商区。% 看台数目,共20个,程序中一般用k表示某个商区。m4=6; %消费档次总数,程序中一般用n表示某个消费档次。vnum=43; %无向图1的顶点数。maxL=inf; %大MS个数上限。maxS=inf; %小MS个数上限。money=50,150,250,350,450,550; %消费档次1-6所对应的消费额(元)。days=16; %奥运期间从开幕到闭幕的天数。% 此数据根据2004年雅典奥运会的数据得出。profitrate=0.16; %利润率,即营业额和利润的比率。% 此数据通过网上的调查数据得出。Area=10000; %每个商区的面积arearatio=0.8; %建筑物总占地面积与每个商区面积的比率;area=Area*arearatio; %建筑物最大占地面积%-% 对3张调查表进行处理f1=rTransData(f1); f2=rTransData(f2);f3=rTransData(f3);% 由于原始数据列排列方式为:序号、性别、年龄段、公交(南北)、% 公交(东西)、私车、出租、地铁(西)、地铁(东)、中餐、西餐、% 商场、消费档次,而在程序中默认的排列方式为:私车、出租、% 公交(东西)、公交(南北)、地铁(西)、地铁(东)、中餐、西餐、% 商场、消费档次,因此需要进行列调换。ratio1,ratio2=GetRatio(m1,m2,m4,f1,f2,f3);% 统计不同交通方式、就餐方式、消费档次组合下的人流百分比。%ratio1: 它是3维数组。第1维:交通方式。第2维:就餐方式。% 第3维:消费档次。ratio1(I,j,n)表示选择交通工具I、就餐方式j% 并且其消费档次为n的人流百分比%ratio2: 不同交通方式、就餐方式组合下的人流百分比。% 它是2维数组。第1维:交通方式。第2维:就餐方式。% ratio2(i,j)表示选择交通工具i、就餐方式j的人流:人流百分比clear f1 f2 f3; %清楚不再使用的变量f1 f2 f3。%-a=Matrix(dis,vnum);% 构建邻接矩阵。% dis: 弧长数组;vnum: 无向图顶点个数% a: 返回的邻接矩阵。D,R=floyd(a); %获得最短路径长矩阵D,插入点矩阵RPath2,Path3,Path4=GetPath(vnum,m1,m2,m3,a,D,R); %获取3段最短出行路线所经过的点。% 对于一个观众,他一天的出行线路分3段:% 第1段:从乘车起点到看台的;% 第2段:从就餐点到看台;% 第3段:从就餐点到乘车点%Path2: 第1段所经过的点:% 第1列:乘车点;第2列:看台;第3-45列:顶点1-43是否被经过。% 2表示被经过;0表示不被经过;1有一半的人经过该点。%Path3: 第2段所经过的点:% 第1列:就餐点;第2列:看台;第3-45列:顶点1-43是否被经过。% 2表示被经过;0表示不被经过;1有一半的人经过该点。%Path4: 第3段所经过的点:% 第1列:就餐点;第2列:乘车点;第3-45列:顶点1-43是否被经过。% 2表示被经过;0表示不被经过;1有一半的人经过该点。Data2,Data3,Data4=GetData(m1,m2,m3,Path2,Path3,Path4); %处理Path2、Path3、Path4的数据。%Data2: 三维数组。% 第1维:乘车地点。第2维:看台。第3维:商区。% Data2(i,k,n)表示观众从乘车点i到看台k是否经过% 商区n。0表示不经过,1表示有一半人经过。2表示经过。 %Data3: 三维数组。% 第1维:就餐点。第2维:看台。第3维:商区。% Data3(j,k,n)表示观众从看台k到就餐点j是否经过% 商区n。0表是示不经过,1表示有一半人经过。2表示经过。%Data4: 三维数组。% 第1维:就餐点。第2维:看台。第3维:商区。% Data2(i,k,n)表示观众从就餐点j到乘车点i是否经过% 商区n。0表示不经过,1表示有一半人经过。2表示经过。%-rRatio1=rShowDataA(ratio1); %将ratio1变为2维数组rData2=rShowData(Data2); %将Data2变为2维数组rData3=rShowData(Data3); %将Data3变为2维数组rData4=rShowData(Data4); %将Data3变为2维数组%-C=GetConsume(money,w,m1,m2,m3,m4,ratio1,ratio2,Data2,Data3,Data4);%计算每个商区的人流量、消费欲望。% C : 二维数组% 行号表示商区号。% 第1列:人流量(人次)% 第2列: 消费欲望(单位:元)%-%msPlan,optL,optS,opt1=optimizeA(m1,m2,m3,C,LMS,SMS,maxL,maxS,days,profitrate,area); %对每一个商区单独优化%求解最优方案%-end-程序2 rTransData.mfunction f=rTransData(ff);f=ff;f(:,4)=ff(:,7);f(:,5)=ff(:,6);f(:,6)=ff(:,5);f(:,7)=ff(:,4);f(:,8)=ff(:,9);f(:,9)=ff(:,8);程序3 GetRatio.mfunction ratio1,ratio2=GetRatio(m1,m2,m4,f1,f2,f3);% ratio1,ratio2=GetRatio(m1,m2,m4,f1,f2,f3);%D1=GetData(m1,m2,m4,f1);D2=GetData(m1,m2,m4,f2);D3=GetData(m1,m2,m4,f3);ratio1=zeros(m1,m2,m4);for i=1:m1 for j=1:m2 for n=1:m4 ratio1(i,j,n)=(D1(i,j,n,2)+D2(i,j,n,2)+D3(i,j,n,2)/3; end endend%-ratio2=zeros(m1,m2);for i=1:m1 for j=1:m2 per=0; for n=1:m4 per=per+ratio1(i,j,n); end ratio2(i,j)=per; endend%-function D=GetData(m1,m2,m4,f);D=zeros(m1,m2,m4,2);dim=size(f);for row=1:dim(1); for i=4:9 if f(row,i)=1 ii=i-3; %乘车方式 break; end end for j=10:12 if f(row,j)=1 jj=j-9; %就餐方式 break; end end nn=f(row,13); %消费档次 D(ii,jj,nn,1)=D(ii,jj,nn,1)+1;endfor i=1:m1 for j=1:m2 for n=1:m4 D(i,j,n,2)=D(i,j,n,1)/dim(1); end endend%-end-程序4 Matrix.m function a=Matrix(dis,vnum);% a=Matrix(dis);a=zeros(vnum,vnum);for i=1:vnum for j=1:vnum if i=j a(i,j)=inf; end endend%dim=size(dis);for row=1:dim(1) i=dis(row,1); j=dis(row,2); distance=dis(row,3); a(i,j)=distance; a(j,i)=distance;end程序5 floyd.mfunction D,R=floyd(a);% D,R=floyd(a)n=size(a,1);D=a;for i=1:n for j=1:n R(i,j)=j; endendfor k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)D(i,j) D(i,j)=D(i,k)+D(k,j); R(i,j)=R(i,k); end end endend% -end-程序6 GetPath.m function Path2,Path3,Path4=GetPath(vnum,m1,m2,m3,a,D,R);% Path=GetPath(a,D,R);% 第一个出行路线row=0;for i=1:m1 %乘车起点 for k=1:m3 %看台 path=zeros(1,vnum); path=InsertVector(path,R,i+20,k); %获得乘车点i到看台k的路径点 row=row+1; Path2(row,1)=i; Path2(row,2)=k; Path2(row,3:2+vnum)=path(1,:); endend% 第2个出行路线row=0;for j=1:m2 %就餐 for k=1:m3 %看台 path=zeros(1,vnum); path=InsertVector(path,R,j+26,k); %获得就餐点j到看台k的路径点 row=row+1; Path3(row,1)=j; Path3(row,2)=k; Path3(row,3:2+vnum)=path(1,:); endend% 第3个出行路线row=0;for j=1:m2 %就餐 for i=1:m1 %乘车 path=zeros(1,vnum); path=InsertVector(path,R,j+26,i+20); %获得就餐点j到看台k的路径点 row=row+1; Path4(row,1)=j; Path4(row,2)=i; Path4(row,3:2+vnum)=path(1,:); endend%-修正Path2=ModifyPath(Path2);Path3=ModifyPath(Path3);Path4=ModifyPath(Path4);%-function P=InsertVector(path,R,i,j);path(1,i)=2;path(1,j)=2;P=path;k=R(i,j);if k=i|k=j return;endP=InsertVector(P,R,i,k);P=InsertVector(P,R,k,j);%-function Path=ModifyPath(Path);dim=size(Path);for row=1:dim(1); if Path(row,15)=2&Path(row,18)=2 Path(row,14)=1; Path(row,9)=1; Path(row,16)=1; Path(row,17)=1; end if Path(row,3)=2&Path(row,8)=2 for v=4:7 Path(row,v)=1; end for v=9:12 Path(row,v)=1; end endend%-end-程序7 GetData.mfunction Data2,Data3,Data4=GetData(m1,m2,m3,Path2,Path3,Path4);% Data2,Data3,Data4=GetData(Path1,Path2,Path3);% 转换数据% 处理后的Data2结构:三维数组:乘车地点-看台-商区:是否可能购物(0或0.5或1)% 处理后的Data3结构:三维数组:就餐地点-看台-商区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公安局警务辅助人员招聘考试笔试试题(含答案)
- 2025年公安辅警招聘知识考试试题+答案
- 2025年度公安招聘辅警考试笔试题及答案
- 2025装配式建筑部品部件标准化设计在装配式建筑装配式装修中的应用报告
- 左右沙发培训知识课件
- 年产240万件碳罐净化阀项目可行性研究报告
- 巡察工作授课课件
- 奔驰处理客户投诉课件
- 二零二五年度工程招投标与合同管理大学校企合作合同
- 二零二五年度夜景照明劳务承包合同范本
- 2025年广西专业技术人员继续教育公需科目(三)答案
- GB/T 13912-2020金属覆盖层钢铁制件热浸镀锌层技术要求及试验方法
- 水轮发电机的基本结构课件
- 《空气动力学》配套教学课件
- 2023年西安陕鼓动力股份有限公司招聘笔试模拟试题及答案解析
- 送达地址确认书(完整版)
- 水泵设备单机试运转记录
- 完整版医院体检报告范本
- 速成意大利语(上)
- Q∕SY 1535-2012 海底管道混凝土配重层技术规范
- 项目评审检查清单(质量阀)
评论
0/150
提交评论