资源描述
数学建模竞赛承 诺 书我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。我们参赛选择的题号是(从A/B中选择一项填写): B 我们的队号为: 11 参赛队员:1. 电子0903 徐路源 2. 数学0901 王璐璐 3. 数学0901 张乐孝 指导教师或指导教师组负责人: 数模组 日期: 2010 年 8 月 10 日评阅编号(由评阅老师评阅前进行编号):.数学建模竞赛编 号 专 用 页评阅编号:评阅记录:评阅人评分备注预测机票价格和预定数量限额最优问题摘要本文所要讨论的问题可以归结为一个趋势拟合和基于二项分布求最优决策的问题。建立了两个模型:分别用来预测机票的未来价格和求机票的预定限额。首先我们根据所给的2005年10月2010年3月期间,每月经济舱机票平均价格(单位:元)数据,通过Matlab软件用函数去拟合,所得函数即为机票预订价格的数学模型。可表示为:f(x)=a1*exp(-(x-b1)/c1)2)+a2*exp(-(x-b2)/c2)2)+a3*exp(-(x-b3)/c3)2)+a4*exp(-(x-b4)/c4)2)+a5*exp(-(x-b5)/c5)2) + a6*exp(-(x-b6)/c6)2) 但在预测中发现,由模型所得参考价格不合实际。单方面拟合出的模型并不具有实际价值。之后我们采用趋势外推法中最小二乘法的周期波动模型来解题。通过与实际价格的比较,发现其误差较小且置信度较高。所以我们得到的机票预定价格的数学模型即为 价格随时间呈周期性变化,每过一个周期价格略有上升。这与人民经济生活水平提高分不开的。最后,我们搜集了一些数据来佐证我们模型的价值。根据实际情况,制定合理的预定策略需从经济利益最大化和社会声誉最好两方面来考虑。社会声誉可以用定了票来登机因飞机满员而不能起飞的乘客不超过某一给定值来衡量。则这个问题可化为经济利益最大化为单目标来求解。我们假设每位乘客不按时前来登机的概率为p,是否前来登机是相互独立的,则不按时前来登机的乘客数服从二项分布。又因为订票需付一定量的定金,且在飞机起飞前48小时内取消预订会没收全部订金。对此,我们分情况讨论。由概率分布知识可得利润S关于预定量限额M的函数为 由利润最大化,利用Matlab软件求出M的最优解,通过检验和灵敏度分析,由模型得出的机票预订限额置信度较高。查阅资料得,此限额较符合实际情况。最后,我们根据我们建立的模型对其进行优化。由实际可能出现的情况增设某类旅客(学生、旅游者)的减价票,规定迟到则机票作废。在此基础上再建立一个模型。分别求此时飞机的参考价格和预定限额。关键字:曲线拟合、趋势外推、周期波动、概率分布、利润最大一、问题重述航空公司对机票一般采取预定策略。客户可以通过电话或互联网预定,这种预定具有很大的不确定性,客户很可能由于各种原因取消预定。航空公司为了争取最大利润,一方面要争取客户,另一方面要降低因客户取消预定遭受的损失。为此,航空公司采用一些措施。首先,要求客户提供信用卡号,预付一定数量的定金。如果客户在飞机起飞前48小时内取消预定,定金将如数退还,否则定金将被没收。其次,航空公司采用变动价格,根据市场需求情况调整机票价格,一般来说旺季机票价格比较高,淡季价格略低。(1)建立机票预定价格的数学模型,并对以下实例作分析。表1给出了某某航空公司某条航线2005年10月2010年3月期间,每月经济舱机票平均价格(单位:元),用模型说明价格变动的规律,并据此估计未来一年内的经济舱机票的参考价格。收集更多的数据来佐证模型的价值(要求注明出处)。(2)在旺季,航空公司往往可以预定出超过实际座位数的机票数, 以减低客户取消预定时航空公司的损失。但这样做可能会带来新的风险, 万一届时有超出座位数的客户出现, 航空公司要通过升级机票档次或赔款来解决纠纷, 为此航空公司还会承担信誉风险. 某条航线就一中机型,有头等舱20座,经济舱300座,每天一班航班。为该航线制定合理的预定策略, 并论证理由。表某航空公司某条航线2005年10月2010年3月经济舱月平均价格(单位:元)时间价格时间价格时间价格2005.106562007.048022008.1010682005.115262007.058782008.119962005.125022007.067942008.128042006.014822007.079262009.017942006.024982007.0810182009.028322006.036322007.099482009.039022006.046882007.1010162009.049722006.057202007.119162009.0510142006.066402007.128242009.069162006.076882008.017382009.079862006.087682008.028062009.0811242006.097362008.038722009.099482006.108022008.048942009.1010562006.117262008.059662009.118722006.126722008.068782009.127962007.017322008.0710282010.018842007.026622008.0811002010.028082007.037802008.099782010.03856 二、背景航空公司订座的特点是:旅客可以在飞机起飞前一百多天里向购票处或航空公司订票,由于离飞机起飞时间较长,以及旅客行为的不确定性,往往航空公司会售出超过实际座位数的票数,即超售。在订座决策中,航空公司面临2种风险:空座风险和超售风险,以航班客座容量为临界点,如果超售的结果(即实际到达机场的已预定座位的旅客人数)少于航班容量,会造成座位剩余,这就是空座风险;如果决策结果多于航班容量,造成有些旅客被拒绝登机,从而带来超售风险,合理的超售可以减少空位损失,但要确定合理的超售数额,却是十分困难的。超售是航空公司收益管理的一项重要内容,这是解决所谓的No Show问题,提高航空公司效益的重要技术手段,同时也有许多理论问题甚至法律问题需要研究。在实际航运中,航空公司发现经常发生已购票的乘客没有乘机(叫做No Show),使得一些座位空着虚飞,而一些想旅行的和一些有急事临时到达机场( 叫做Co Show)的旅客却因购不到票而不能成行,这不仅浪费了航空公司的生产资源,同时也浪费了社会资源。根据对历史销售和离港数据进行分析,可以预测旅客的No Show率和Co Show率,然后确定超售率进行机票销售。这样做不但可以充分利用热线航班的座位,提高航空公司的收益,同时也使得其他想乘机旅行人员能够成行,可以说是各方都受益的好事。德国汉莎航空公司在超售方面所做的工作非常出色,每年能为公司多创造5%的收益。因此对超售的研究一直为航空公司所重视。但超售预测不可能十分准确,因此可能发生所谓的DB(Denied Boarding)问题,即实No Show率低于Co Show率时,便发生了已购票并来乘机的旅客上不了飞机的问题。这常常引起旅客的不满甚至航空公司与旅客的冲突,航空公司采取补偿DB旅客以化解矛盾的做法,但这样的补偿常常是机票价格的两倍以上。发生DB,航空公司的成本迅速上升,这也是航空公司不愿意看到的。因此超售是一把双刃剑,如何解决好No Show率和DB这一对矛盾,一直是航空公司和学术界都十分关心的问题。目前研究的较多的是机票超售模型是静态的。对于一个航班从开始销售之日到飞机起飞时,超售的数量保持不变。这样将完全忽略机票实际销售情况。超售实际上完全溶于机票销售过程中。在机票销售过程中,航空公司的订座系统一面接受旅客的订票,一面接受旅客的取消订票或是改签其他航班。显然机票的预定速度应大大超过取消速率,在飞机起飞前某时刻将达到或接近飞机的容量,此时航空公司就将面临超售问题。一般来说,航空公司可以控制订票的流量,当已定机票超过理想的数量时,就不再接受订票的请求。但是由于订票需求的不确定性,目前被拒绝的需求未来不再出现,而未来的取消还继续发生,则到飞机起飞时将产生空座,造成航班收益下降。因此机票的超售是一个动态的决策过程。这一过程依赖于当前的销售状态,未来的需求分布,机票取消分布和起飞时的NO-SHOW率、三、符号说明r飞行费用(为常数)飞机头等舱容量(为常数)飞机经济舱容量(为常数)头等舱机票价格(为常数)经济舱机票价格(为常数)头等舱预定票数量的限额(为常数)经济舱预定票数量的限额(为常数)每位乘客没来登机且未在48小时之前取消订票的概率头等舱中定了票没有登机的乘客经济舱中定了票没有登机的乘客每位头等舱被挤掉者获得的赔偿金(为常数)每位经济舱被挤掉者获得的赔偿金(为常数)S平均利润机票订金占机票价格的比重X月份,初始值为x=1,四、模型假设 1、各位乘客是否按时前来登机是相互独立的(这适用于单独行动的商人、游客)。2、每趟飞机预定票数量都大于飞机的实际座位数。3、飞行费用与乘客人数无关,为一个固定的常数。4、头等舱与经济舱顾客未按时取消订票的概率相等五、问题分析与建立模型(1)方法一:分析:由所给数据,用Matlab软件来拟合函数,再根据函数来预测经济舱机票的参考价格。记2005年10月份为x=1,则05年11月份为x=2,以此类推。即:2005年10月为第一个月份,如:x=10,则表示06年7月拟合结果如下:由求解报告得知:数学模型为:f(x)=a1*exp(-(x-b1)/c1)2)+a2*exp(-(x-b2)/c2)2)+a3*exp(-(x-b3)/c3)2)+a4*exp(-(x-b4)/c4)2)+a5*exp(-(x-b5)/c5)2) + a6*exp(-(x-b6)/c6)2)a1=258.1 (-4931, 5447)b1=11.84 (-21.32, 45)c1=5.754 (-30.07, 41.58)a2=-763.3 (-4.991e+006, 4.989e+006)b2=9.738 (-2804, 2823)c2=35.18 (-6.951e+004, 6.958e+004)a3=1400 (-7.956e+004, 8.236e+004)b3=27.96 (-3.621, 59.55)c3=6.392 (-96.3, 109.1)a4=1255 (-3.937e+005, 3.962e+005)b4=61.28 (-1.531e+010, 1.531e+010)c4=1.48e+004 (-2.162e+012, 2.162e+012)a5=-3.035e+008 (-2.53e+013, 2.53e+013)b5=162 (-7.08e+005, 7.083e+005)c5=29.06 (-1.042e+005, 1.043e+005)a6=-1285 (-9.511e+004, 9.254e+004)b6=28.36 (20.3, 36.43)c6=4.848 (-32.56, 42.25)Goodness of fit: SSE: 2.234e+005 R-square: 0.8267 Adjusted R-square: 0.7448 RMSE: 78.78置信度为:95%。根据模型,由Matlab软件求得未来一年经济舱机票参考价格如下表所示:时间价格2010.047162010.056142010.064802010.073072010.08852010.09-1982010.102010.112010.122011.012011.022011.03预测的机票价格从2010年9月起变成了负数,显然与实际不符合,所以该模型并不能帮助我们解决实际问题。方法二:分析:我们产用最小二乘法中趋势外推法的周期波动模型来解题。季节型时间数列以日历时间为波动周期;循环型时间数列波动周期往往大于一年,且不稳定。尽管两者有所区别,但都呈周期性波动,因此宜以正弦曲线为基础,经修正波幅与周期拟合波动规律。正弦曲线预测模型的一般形式为:只要对已知数据按上述各项要求加工填入以后,求解六元一次方程组,得,代入预测方程即可开始预测。用Matlab软件求出此问题中模型的系数。具体程序见附录一解得系数 则未来一年内的经济舱机票的参考价格可按如下模型计算 用此模型我们得出的模型曲线如下 (红色折线为实际票价走势,蓝色为通过计算得到的模型曲线)用Matlab软件根据模型给出未来一年内的经济舱机票的参考价格(具体程序见附录二)时间价格2010.049892010.0510652010.0611372010.0711872010.0812042010.0911842010.1011342010.1110692010.1210092011.019702011.029682011.031002比较方法二与方法一,显然用方法一所求的模型十分繁杂,具体计算时又非常得不方便。而方法二所求的的模型简洁明了,便于计算,且置信度较高。所以舍弃方法一所求模型。综上所述:机票预定价格的数学模型为:(2)分析:开展预定票业务时,对于一次航班,若公司限制预定票的数量恰好等于飞机的容量,那么由于总会有一些定了机票的乘客很可能由于各种原因取消预定不按时前来登机,致使飞机因不满员飞行而利润降低,甚至亏本。所以,航空公司往往会预定出超过实际座位数的机票数, 以减低客户取消预定时航空公司的损失。然而,这样做也存在着潜在的风险:当持票前来的乘客超过飞机容量时,必然会引起那些不能飞走的乘客(本文简称被挤掉者)的抱怨,公司不管如何补救,也会导致声誉受损和一定的经济损失(如客源减少,付给一定的赔偿金等)。所以,航空公司必须综合考虑经济利益和社会声誉,确定预定票数量的最佳限额。建立模型:1、公司的经济利益可以用平均利润S来衡量,每次航班的利润S为机票收入扣除飞行费用和可能发生的赔偿金再加上一部分乘客因为没有在48小时之前取消订票而交上的订金。设:头等舱中预定出了张票,飞机起飞时,有位没有按时前来登机。经济舱中预定出了张票,飞机起飞时,有位没有按时前来登机,且每位客户在48小时之前便取消预订的概率为,于是在48小时之内没有取消预订的概率,已知预交的订金占机票价格的。头等舱:2、公司从社会声誉考虑,应该要求被挤掉的乘客尽量少。而由于被挤掉者的数量是随机的,可以用被挤掉的乘客数超过若干人的概率作为度量指标。记被挤掉的乘客数超过j人的概率为,因为被挤掉的乘客数超过j,等价于m位预定票的乘客中不按时前来登机的不超过m-n-j-1人,所以:对于给定的n,j,显然当m=n+j 时不会有被挤掉的乘客,即=0。而当m变大时单调增加。综上,S(m)和 虽然是这个优化问题的两个目标,但是可以将不超过某给定值作为约束条件,以S(m)为单目标函数来求解。七、模型求解与结果的分析检验和误差分析模型无法解析地求解,我们设定几组数据,用matlab软件作数值计算,结果如下,我们查阅资料,得知下列数据比较符合实际情况。设:求得最大利润为20.12万元。当时求得最大利润为21.52万元。由于实际中有诸多因素不确定,可对超售票数造成影响(如天气状况对起飞成本的影响,旺季时票价产生不正常波动)所以通过分析和检验,用matlab软件计算得知,当八、模型的优化对机票预定限额模型的优化:考虑到不同客源的实际需求,如商业界、文艺界人士喜欢这种无约束条件的预订票业务,他们宁愿接受更高的票价,而不按时前来登机的可能性较大;游客与按时上下班的雇员,会愿意以不按时前来登机则机票失效为代价,换取较低额的票价。所以,航空公司为了降低风险,可以把上述第2类乘客作为基本客源,对他们降低票价,但购票时即付款,不能按时前来登机即机票作废。设预订票数量m中有t张是专门预售给第二类乘客的,其折扣票价为,(因为第二类乘客身份的特殊性,所以只考虑他们购买经济舱的情况)当m-t位第1类乘客中有k位不按时前来登机时每次航班的利润s为(只对于经济舱) 九、模型的评价与推广对机票预测价格模型的评价与推广优点:通过图形就可以看出其价格的走势与实际相似度很高。运用最小二乘法构造方程组解相关系数,并全面考虑截距、波动周期、波动幅度是使其精确度较高的主要原因。运用该模型可以在实际中较为准确地估计未来机票的价格。缺点:不难发现每个周期过后,价格都略有增长,但实际中价格不可能永远增长下去。而且该模型无法估计非正常的数据,比如在旺季机票的价格可能比平常会高出好几倍,在这种情况下就很难做出准确的预测。在随时间的增长中,误差也会越来越大。所以在预测时可以不去考虑比较早时期的信息,只考虑要预测时间就近的30组数据这样会提高预测的准确度。对机票预定量限额模型的评价与推广评价:模型中把头等舱与经济舱的情况都做了考虑,而且是在不同的情况下做的,在基本合理的假设下对一个两目标的问题做了简化处理,即使这样,得到的模型也无法解析地求解,幸而,数值计算的结果以满足我们对问题进行分析的要求。推广:与航空公司的预定票策略相似的事件在日常商务活动中并不少见,旅馆、汽车出租公司等为争夺顾客也可以如此处理。十、参考文献【1】 赵 静,但 琦, 数学建模与数学实验(第2版),高等教育出版社,2004【2】 姜启源,谢金星,叶 俊, 数学模型(第三版),高等教育出版社,2005【3】 陈怀琛,吴大正,高西全, MATLAB及在电子信息课程中的应用(第2版),电子工业出版社,2003 【4】鞠彦兵 冯允成 王爱华,航空客运超售风险研究,北京航空航天大学学报,第25卷 第5期:第1页 2002年 10月 十一、附录附录一x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54y=656,526,502,482,498,632,688,720,640,688,768,736,802,726,672,732,662,780,802,878,794,926,1018,948,1016,916,824,738,806,872,894,966,878,1028,1100,978,1068,996,804,794,832,902,972,1014,916,986,1124,948,1056,872,796,884,808,856x1=xx2=cos(pi.*x/6)x3=sin(pi.*x/6)x4=x.*cos(pi.*x/6)x5=x.*sin(pi.*x/6)A=54,sum(x1),sum(x2),sum(x3),sum(x4),sum(x5);sum(x1),sum(x1.*x1),sum(x1.*x2),sum(x1.*x3),sum(x1.*x4),sum(x1.*x5);sum(x2),sum(x1.*x2),sum(x2.*x2),sum(x2.*x3),sum(x2.*x4),sum(x2.*x5);sum(x3),sum(x1.*x3),sum(x2.*x3),sum(x3.*x3),sum(x3.*x4),sum(x3.*x5);sum(x4),sum(x1.*x4),sum(x2.*x4),sum(x3.*x4),sum(x4.*x4),sum(x4.*x5);sum(x5),sum(x1.*x5),sum(x2.*x5),sum(x3.*x5),sum(x4.*x5),sum(x5.*x5)b=sum(y);sum(x1.*y);sum(x2.*y);sum(x3.*y);sum(x4.*y);sum(x5.*y)x=AbA =1.0e+004 *0.0054 0.1485 -0.0001 0.0004 -0.0034 0.01010.1485 5.3955 -0.0034 0.0101 -0.1861 0.5413-0.0001 -0.0034 0.0027 -0.0000 0.0756 -0.00230.0004 0.0101 -0.0000 0.0027 -0.0023 0.0729-0.0034 -0.1861 0.0756 -0.0023 2.7761 -0.12630.0101 0.5413 -0.0023 0.0729 -0.1263 2.6195b =1.0e+006 *0.04491.32830.00120.00120.03180.0468x =638.38777.269049.9355-58.02390.9938-0.4632x=linspace(1,62)plot(x,(638.3877+7.269.*x+49.9355.*cos(pi.*x./6) -58.0239.*sin(pi.*x./6) +0.9938.*x.*cos(pi.*x./6) -0.4632.*x.*sin(pi.*x./6)x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54y=656,526,502,482,498,632,688,720,640,688,768,736,802,726,672,732,662,780,802,878,794,926,1018,948,1016,916,824,738,806,872,894,966,878,1028,1100,978,1068,996,804,794,832,902,972,1014,916,986,1124,948,1056,872,796,884,808,856hold onplot(x,y,r)xlabel(time)ylabel(price)附录二x=linspace(55,66,12)y=638.3877+7.269.*x+49.9355.*cos(pi.*x./6)-58.0239.*sin(pi.*x./6)+0.9938.*x.*cos(pi.*x./6) -0.4632.*x.*sin(pi.*x./6)x=55 56 57 58 59 60 61 62 63 64 65 66y=1.0e+003 * 0.9894 1.0654 1.1371 1.1873 1.2040 1.1841 1.1344 1.0697 1.0091 0.9709 0.9676 1.002616
展开阅读全文