火车票购票网站优化问题 - 数学建模竞赛论文 精品

发布时间:2017-09-28 13:36:29

数学建模竞赛论文

论文题目:火车票购票网站优化问题

摘要

本文针对火车票购票网站的优化问题,在合理的假设下,分别建立了参数估计 、蒙特卡罗模拟和主成成分分析这三个模型,较好地解决了火车票购票网站的优化问题。

:(估计该队列每秒最多能处理多少数据并计算其错误率问题)首先对题目所给数据进行处理,采集样本。然后运用参数估计的方法,采用最大似然估计法(假设似然函数是正态分布函数)给出参数的点估计。经软件计算得到该队列每秒最多能处理128个数据,其错误率为0.0319.

:(模拟2013117日网站订票请求量数据并计算需要多少个队列可以满足需求问题)本文根据网站日访问量数据和现行的分时购票策略,采用蒙特卡罗方法随机模拟网站获取号码次数、获取号码耗时和入队列总耗时数据,在满足入队列错误率低于0.1%,队列排队的时间不超过30分钟的前提下,得到2013117日的网站订票请求量数据(部分见附录2.1),经软件计算需要61+75+69+1155+554+514+71+73+87+13904=16563个队列可以满足需求。

:(评价现行的分时购票策略是否合理,若不合理,请优化,并根据优化后的分时购票策略,重新计算第二问问题)首先收集影响现行的分时购票策略的每个因素,然后采用主成成分分析法,用软件计算每个时段的最后总得分,并对其降序,得到结果如下:

时刻

得分

时刻

得分

18:00

2.83

9:00

-0.37

11:00

-0.07

16:00

-0.37

12:00

-0.25

15:00

-0.37

13:00

-0.26

8:00

-0.39

17:00

-0.36

10:00

-0.39

从表中可以看出该分时购票策略不合理,经优化后的分时购票策略为

8:009:0011:0012:0013:0015:001600170018:00.

并重新计算第二问得到2013117日网站订票请求量数据,共需要61+75+1155+554+514+71+73+87+13904=16494 个队列可以满足需求。

:(给网站提出一个建议书)通过查阅相关资料,访问火车票购票网站,然后结合购票过程中遇到的实际问题,本文提出了4个较合理的建议。

关键词: 火车票 、购票网站、参数估计、极大似然法、蒙特卡罗随机模拟、主成成分分析

一、问题重述

1.1问题背景与条件

火车,是人们出行的重要的交通工具之一。尤其在节假日,购买火车票的旅客将会非常多,能买到一张火车票是每个旅客的愿望。中国从2011年开始实行网络售票,购买火车票的方式从只能到火车票售票口排队购票,逐步发展为可通过电话订票和网站订票等多种便利的途径。网络购票给人来了便利,旅客可以不出家门在网络上就能买到车票,售票窗口也不用那么繁忙,节省了大量的人力物力。网络售票给人带来便利的同时,也出现了不少问题。典型的是2013年春节的时候,购票网站出现了包括登录、购买、付款等各个环节的问题。为了保证网站更稳定的工作,需要你帮忙提出优化意见。本文为就在此背景下提出下面的问题。

1.2需要解决的问题

为了便于对问题的分析,现对网站的订票过程做如下简化:

1、登录网站:根据用户名和密码登录网站;

2、查询余票:查找某趟列车的剩余车票;

3、生成订单:锁定剩余车票中的一张作为购买的车票,根据车票信息和购票人信息生成支付订单;

4、付款完成:车票购买完成;付款失败:车票回收继续等待预定。

经分析,网站订票的瓶颈可能是以下两方面的原因:

第一,网站并发问题,也就是同一时刻订票人数过多的问题。在同一时刻(例如1秒之间)访问网站的人数过多,服务器无法响应所有人的请求,导致无法登录、无法查询票车票等问题。在春节期间网站的访问量是非常大的,网站的日访问量可以参考alexa的记录(见参考资料)。为了缓解同一时间段内网站访问量过大的问题,网站采取了分时购票的方法,相当于分散了请求量,减轻了同一时间段并发访问过大的问题。

第二,唯一资源问题,也就是唯一的一张车票。所有来订票的人先要锁定一张车票,如果出现多人同时请求订购同一张票,那么系统就无法判断这张车票该给谁锁定,这样系统就会让请求重试。如果一直无法锁定车票,就会导致系统死锁、订票失败。为了应对车票这唯一资源的分配问题,网站又采取了排队的方法,即请求到来先获取一个号码等待排队,这样就避免了对车票直接造成死锁。获取一个号码,入队列的过程相对于处理一张车票的过程(包括锁定车票、生成订单、检测支付等一系列操作)是非常快速的。(这个过程可以和银行的操作流程对比,先获取一个号码排队等待处理,服务窗口是处理器,按照队列先进先出的顺序依次处理)。

订票网站想要利用一种队列来满足现在的订票需要,附件给出了这个队列的测试数据:一个队列的入队列数据和一个队列的出队列数据,这些数据只是测试队列性能使用的,不是预测这一时间网站请求量的依据。

根据资料回答以下问题:

1、根据队列的数据估计该队列每秒最多能处理多少数据,错误率是多少。

2、根据网站日累计访问量数据(见参考资料)和现行的网站分时策略,模拟2013117日的网站订票请求量数据,计算需要多少个队列可以满足需求(总的票数用N表示,要求入队列错误率低于0.1%,要求队列排队的时间不超过30分钟)。

3、评价现行的分时购票策略是否合理,可以如何优化(要求分时不超过10个)根据优化的分时策略重新计算第2问的问题。

4、给网站提出一个建议书,可以包括其他的方面,例如预售期、退票等,需要建立模型说明。

2、问题分析

2011年年底,全国铁路已经全面推行网络售票,中国铁路开始走进电子商务时代。但随着时间的推移,网络购票出现的问题越演越烈。本文的主要工作首先是根据队列的数据,估计该队列每秒最多能处理多少数据并计算其错误率,其次是根据网站日累计访问量数据和现行的网站分时策略,模拟2013117日的网站订票请求量数据,计算需要多少个队列可以满足需求。然后是评价现行的分时购票策略是否合理,可以如何优化(要求分时不超过10个)根据优化的分时策略重新计算第2问的问题。最后是给网站提出一个建议书。

对于问题一,要估计该队列每秒最多能处理多少数据并计算其错误率。首先对题目所给数据进行处理,采集样本。然后运用参数估计的方法,采用最大似然估计法(假设似然函数是正态分布函数)给出参数的点估计。最后用软件求出该正态分布函数的参数估计值。

对于问题二,要根据网站日累计访问量数据和现行的网站分时策略,模拟2013117日的网站订票请求量数据,并计算需要多少个队列可以满足需求。建立蒙特卡罗模拟模型,采用蒙特卡罗方法随机模拟网站获取号码次数、获取号码耗时和入队列总耗时数据,在满足入队列错误率低于0.1%,队列排队的时间不超过30分钟的前提下,得到2013117日的网站订票请求量数据,并计算需要多少个队列可以满足需求。

对于问题三,要评价现行的分时购票策略是否合理,可以如何优化(要求分时不超过10个)根据优化的分时策略重新计算第2问的问题。首先要收集影响现行的分时购票策略的每个因素,然后采用主成成分分析法,用软件计算每个时段的最后总得分,并对其降序,从中可以看出哪些具有优势和劣势,相对于优势来说,劣势可以进行优化。最后在优化的分时策略的基础上,用蒙特卡洛方法重新计算第二问的问题。

对于问题四,要给网站提出一个建议书。查阅相关资料,访问火车票购票网站,再结合购票过程中遇到的实际问题,提出相关的合理建议即可。

三、模型假设

结合本题的实际,为了确保模型求解的准确性和合理性,我们排除了一些因素的干扰,提出以下几点假设:

1、假设题目所给的数据真实可靠;

2、假设模型建立的过程中不存在网站订票的瓶颈;

3、假设现行的网站分时策略比较合理;

4、假设模型进行参数估计的显著性水平为0.05

5、假设模型给出的似然函数是正态分布函数;

6、假设模型模拟网站订票请求量数据的方法可靠;

7、假设模型评价现行的分时购票策略的方法可靠;

8、假设针对问题所给出的建议能够起到较好的结果,建议可靠,作用性强。

四、符号说明

为了便于问题的求解,我们给出以下符号说明:

符号

说明

参数

似然函数

对数似然函数

概率密度函数

样本观察值

联合密度函数

火车起售车站数量、网站购票数量、网站访问量、网站预售票数量

时刻(除去14:00

个指标的样本均值和样本标准差

标准化指标变量

相关系数矩阵

特征值

特征向量

信息贡献率

累积贡献率

综合得分

5、模型的建立与求解

经过以上的分析和准备,我们将逐步建立以下数学模型,进一步阐述模型的实际建立及求解过程。

5.1模型一(参数估计模型)

5.11极大似然估计算法步骤

数据处理,采集样本;

由总体分布导出样本的联合概率密度函数;

:把样本联合概率密度函数中自变量看成已知常数,而把参数看作自变量,得到似然函数

:求似然函数的最大值点(常转化为求对数似然函数的最大值点);

:在最大值点的表达式中,用样本值代入就得参数的极大似然估计值.

5.12具体过程

要根据队列的数据,估计该队列每秒最多能处理多少数据并计算其错误率。首先对题目所给数据进行处理,采集样本。然后以作为参数,使已知数据在某种意义下最可能出现,使得似然函数(假设似然函数是正态分布函数)最大。在最大值点的表达式中,用样本值代入就得参数的极大似然估计值.具体过程如下:

(1):对题目所给数据进行处理,采集样本,将它们制作成表格如下:

处理个数

220

159

109

89

101

100

111

111

错误率

0.0591

0.0503

0

0

0.0099

0.01

0

0

处理个数

166

150

164

116

122

101

101

错误率

0.0602

0.0867

0.122

0.0259

0.0246

0.0099

0.0198

1

(2):假设总体近似服从正态分布,即,估计参数

3):设总体是连续离散型随机变量,其概率密度函数为,若取得样本观察值为,则因为随机点取值为时联合密度函数值为.所以,按极大似然法,应选择的值使此概率达到最大.我们取似然函数为 1

4):极大似然估计法就是在参数的可能取值范围内,选取使达到最大的参数值,作为参数的估计值.即取,使,【2】因此,求总体参数的极大似然估计值的问题就是求似然函数的最大值问题.这可通过解下面的方程3】来解决.因为的增函数,所以的同一值处取得最大值.我们称为对数似然函数.因此,常将方程【3】写成: 4

方程【4】称为似然方程.

(5):解方程【3】或【4】得到的就是参数的极大似然估计值.

6):

得出.

通过软件求解得到参数的极大似然估计值为128, 0.0319(程序见附录一)

即最大处理数据为128,其错误率为0.0319.

5.2模型二(蒙特卡罗模拟模型)

根据网站日累计访问量数据和现行的网站分时策略,建立蒙特卡罗模拟模型,具体过程如下:

(1):查阅2013117日的网站日累积访问量数据为16564480,查阅12306网站及关于调整部分车站互联网、电话订票起售时间的公告,了解现行的网站分时策略,并作出相关分析。

(3):以1000次作为一次模拟,随机模拟获取号码次数、获取好码耗时和入队列总耗时数据,在满足入队列错误率低于0.1%,队列排队的时间不超过30分钟的前提下,得到2013117日的网站订票请求量数据(8:00时刻部分见附录2.1),并且计算出需要多少个队列可以满足需求。

(4):经软件编程(具体程序见附录2.2)算出需要61+75+69+1155+554+514+71+73+87+13904=16563个队列可以满足需求。

5.3模型三

5.31(主成分分析模型)

要评价现行的分时购票策略是否合理,可以如何优化(要求分时不超过10个)。采用主成成分分析方法对现行的分时购票策略进行综合评价,具体步骤如下:

(1):收集影响现行的分时购票策略的每个因素,将其做成表格如下:

时刻

火车起售车站数量

网站购票数量

网站访问量

网站预售票数量

8:00

25

75000

61250

78500

9:00

36

108000

75410

114500

10:00

30

90000

69040

94100

11:00

178

534000

1155200

541000

12:00

88

264000

554120

287400

13:00

85

255000

514200

265400

15:00

33

99000

71200

100700

16:00

34

102000

72510

115400

17:00

39

117000

87410

124100

18:00

1308

4924000

13904140

4759007

总数

1856

6478900

16564480

6480107

2

(2):用分别表示火车起售车站数量、网站购票数量、网站访问量、网站预售票数量,用分别表示时刻(除去14:00),第时刻的取值分别记作,构造矩阵.

(3):对原始数据进行标准化处理。将各指标转换成标准化指标,有

=,其中:,即为第个指标的样本均值和样本标准差。对应地,称,为标准化指标变量。

(4):计算相关系数矩阵。相关系数矩阵,有其中:是第个指标与第个指标的相关系数。

(5):计算特征值和特征向量。计算相关系数矩阵的特征值,及对应的标准化特征向量

(6):计算特征值的信息贡献率和累计贡献率。称为主成分的信息贡献率,为主成分的累积贡献率。经软件计算得到累计贡献率为0.99976,达到符合要求。

(7):计算综合得分:,其中:为第个主成分的信息贡献率,根据综合得分值就可以进行评价。经软件计算得到各时刻的信息贡献率和和综合得分如下表:

3

(8):评价现行的分时购票策略是否合理并且优化:从表3中可以看出,各时段的综合得分前两个数据明显大于后面的数据,并且第一个数据又明显大于第二个数据,后面的数据相对比较均匀,由此可以得出现行的分时购票策略不合理,应该让18:00时刻和11:00时刻火车起售车数量均匀分给其他时刻,并且重新调整分时购票策略如下:

8:009:0011:0012:0013:0015:001600170018:00.

5.32(优化后重新计算第二问的问题)

根据优化的分时策略,经软件编程(部分程序见附录3.1)重新模拟2013117日的网站订票请求量数据(部分见附录3.2),计算出共需要 61+75+1155+554+514+71+73+87+13904=16494 队列可以满足需求。

5.4给出建议书

2011年年底,中国铁路开始全面实行网上售票。然而网络购票给广大客户带来便利的同时,也相继出现了不少问题。归根结底,还是需要提升12306网站的体验,做好应急预案,才是王道。现建议如下:

建议一:目前用户进入车票预定页面所默认的起始时间是当日,其实在春运期间,可以默认的是最早订到车票的日期,服务好急于订票的用户最贴心。

建议二:12306的乘车人姓名、座位席别要在预定了再选,建议预先选定,并且自动记忆,这样用户上次没买到,下次系统还记得,直接点击确认就可以继续购票了。其实就是让网站更“聪明”些,自动知道用户要买哪天、哪趟车的票。

建议三:网上购票流程,查询-》预定-》确认-》完成,这样的操作逻辑更适合售票员,不适合网民的习惯,完全是照搬线下窗口售票。建议做做数据挖掘,把用户常买的车次记录下来,然后用户一登进去,就应该显示用户最常买的那些车次。

建议四:往返这个需要走两遍预订的流程,目前需要选两遍,乘车人,输入两遍验证码,进行两次验证,建议可以合并为一次预订。

6、模型的评价与推广

6.1优点

算法的精确度较高,具有很好的稳定性和可信度。对于参数估计模型,极大似然法是对总体参数作点估计的一个较好的方法,其优点是无论在白噪声干扰或有色噪声干扰下,都有良好的统计特性。对于蒙特卡罗模型,蒙特卡罗模拟方法的优点是能够比较逼真地描述具有随机性质的事物的特点及物理实验过程,受几何条件限制小,收敛速度与问题的维数无关,误差容易确定,程序结构简单,易于实现。对于主成成分分析模型,主成成分分析法的优点是可消除评价指标之间的相关影响,可减少指标选择的工作量,当评级指标较多时还可以在保留绝大部分信息的情况下用少数几个综合指标代替原指标进行分析, 在综合评价函数中,各主成分的权数为其贡献率,它反映了该主成分包含原始数据的信息量占全部信息量的比重,这样确定权数是客观的、合理的,它克服了某些评价方法中认为确定权数的缺陷。 这种方法的计算比较规范,便于在计算机上实现,还可以利用专门的软件。

6.2缺点

对于参数估计模型,极大似然法最终要归结为是似然函数值为最大的最优化问题,这就往往得不到解析解,只能采用数值解法,所以计算工作量较大。对于蒙特卡罗模拟模型,蒙特卡罗方法的缺点是收敛速度慢,误差具有概率性,进行模拟的前提是各输入变量是相互独立的。对于主成成分分析模型,在主成成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。其次主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。

6.3推广

极大似然估计法在不同概率问题中应用很多,当然它还可以作用在其他方面,比如应用极大似然法分析质量-数量性状遗传,估计信号频率等。

蒙特卡罗方法所特有的优点,使得它的应用范围越来越广。它还可以应用在粒子运输问题,统计物理,典型数学问题,真空技术,激光技术以及医学,生物,探矿等方面,特别适用于在计算机上对大型项目、新产品项目和其他含有大量不确定因素的复杂决策系统进行风险模拟分析。随着科学技术的发展,其应用范围将更加广泛。

主成成分分析法是一种降维的统计方法,它可以用尽量少的综合指标代替众多的原始数据,并尽可能多地反应原始数据所提供的信息,是一种方便、快捷和准确的量化评价功能学特性的新方法,它可以应用于保健食品功能学评价的研究,评价保健食品的功能特性对抗疲劳和耐缺氧的作用。其次主成成分分析还可以作用其他众多领域。在近红外光谱中、食品品质方面、核磁共振技术中、滴定分析中都可以应用。

7、参考文献

1、苏均和主编:概率论与数理统计,上海财经大学出版社.19991版.

2、茆诗松等编著:概率论与数理统计,中国统计出版社.19991版.

3、魏振军编:概率论与数理统计三十三讲,中国统计出版社.20001版.

4、唐生强主编:概率论与数理统计复习指导,科学出版社.19991版.

5、参数估计:百度百科

6、司守奎等编著:数学建模算法与应用,北京国防工业出版社,20111

7张德丰等编,高级语言编程,机械工业出版社,201001月。

八、附件

附录一

%%%%%%%%%%%%%%%%%%%%参数估计:正态分布的最大似然估计程序

clc,clear

A1=[220 159 109 89 101 100 111 111 166 150 164 116 122 101 101];%处理数据个数

A2=[0.0591 0.0503 0 0 0.0099 0.01 0 0 0.0602 0.0867 0.122 0.0259 0.0246 0.0099 0.0198];%对应的错误率

[muhat,sigmahat,muci,sigmaci]=normfit(A1,0.05)%正态分布的最大似然估计,置性度为%95的置性区间

[muhat,sigmahat,muci,sigmaci]=normfit(A2,0.05)%同上,返回显著性水平为0.05的期望,方差值,和置性区间

附录二

2.1

8:00时刻

网站订票请求量数据

8:00时刻

网站订票请求量数据

1

805

8

833

2

824

9

823

3

831

10

836

4

827

11

827

5

837

12

838

6

836

13

838

7

822

……

……

2.2

%%%%%%%%%%%%%%蒙特卡洛程序

clc,clear

%%%%%%%%%%%%8:00网站访问量数据

N0=61250;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%9:00网站访问量数据

N0=75410;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%10:00网站访问量数据

N0=69040;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%11:00网站访问量数据

N0=1155200;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%12:00网站访问量数据

N0=554120;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%13:00网站访问量数据

N0=514200;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%15:00网站访问量数据

N0=71200;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%16:00网站访问量数据

N0=72510;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%17:00网站访问量数据

N0=87410;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

%%%%%%%%%%%%18:00网站访问量数据

N0=13904140;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2);%总票数

end

No1%计算需要多少个队列可以满足需求

附录三

3.1

%%%%%%%%%%%%%%蒙特卡洛程序

clc,clear

%%%%%%%%%%%%8:00网站访问量数据

N0=61250;

No1=round(N0/1000);%计算需要多少个队列可以满足需求

for i=1:No1

D=0.12;%错误率初始值

t=32;%队列排队时间初始值

while D>=0.1&&t>30%循环判断

A=round(1+(4-1)*rand(1000,1));%获取号码次数

B=0.07*rand(1000,1);%获取号码耗时

N1=length(find(A>3));%获取号码次数超过三次的数量

N2=1000-N1;%获取号码成功的票数

C=size(A);%A同样大小的矩阵做为入队列总耗时

if A>3

C=[];%入队列总耗时为空

else

C=0.07*rand(N2,1);%入队列总耗时不为空

end

D=N1/1000;%入队列错误率

t=sum(C);%入队列总时间

end

N=sum(N2)%总票数

end

No1%计算需要多少个队列可以满足需求

3.2

8:00时刻

网站订票请求量数据

8:00时刻

网站订票请求量数据

1

830

8

818

2

833

9

823

3

817

10

848

4

826

11

853

5

839

12

826

6

837

13

832

7

836

……

……

火车票购票网站优化问题 - 数学建模竞赛论文 精品

相关推荐