1、存档资料 成绩: 华东交通大学理工学院课 程 设 计 报 告 书所属课程名称 运筹学课程设计 题 目 刘经理的机票购买策略 分 院 电 信 分 院 专业班级 2011 级 信管 2 班 学 号 20100210450127 学生姓名 肖扬斌 指导教师 张 程 2013 年 6 月 22日目 录第 1 章 问题表述第 2 章 问题分析第 3 章 模型建立及求解第 4 章 总结第 5 章 参考资料第 6 章 附录课程设计(论文)评阅意见序号 项 目 分 数1 课程设计态度评价(10 分)2 任务难度评价(20 分)3 工作量饱满评价(20 分)4 设计创新性评价(20 分)5 论文书写规范化评价(
2、10 分)6 综合运用能力(20 分)综 合 评 定 评阅人: 一、问题描述某公司的刘经理常驻公司的北京总部,但他需要去广州营业部检查指导工作。已知第二季度他去广州的日常安排如表所示。这样在 4 月 1 日久可以提前预定所有航班机票。另一个表给出了北京-广州间不同提前期预定的单程或往返机票价。又航空公司规定,如机票往返日期间隔超过 15 天,票价额外优惠 100 元,超过 30 天额外优惠 200 元,超过 60天额外优惠 300 元。航班需求数据和运输距离如表 2 所示。其中,OrignA/P 表示起飞机场,Dep.T.表示起飞时间,Dest.A/P 表示目标机场,Dist 表示轮挡距离,
3、Demand 表示航班需求量,Std Dev.表示需求的标准差。该航空公司的机队有两种机型:9 架 B737-800,座位数 162;6 架 B757-200,座位数 200。飞八个机场:A,B,I,J,L,M,O,S。 B737-800 的座英里成本(CASM)为 0.34 元,B757-200 为 0.36 元。 两种机型的座英里收益(RASM)均为 1.2元。航空公司以成本最小为目标进行机型指派,在成本方面不仅考虑运行成本,还必须考虑旅客溢出成本,否则将偏向于选取小飞机,使航空公司损失许多旅客,而刘经理则需考虑机票最优购买策略。 1、决策变量 经过对问题描述的分析得出,在航空公司要选择最
4、优择机运行下,刘经理要解决飞机机票购买问题,设定两类变量:1)各航线机型 2)机场时间节点飞机流变量 2、各航线机型 令 B737-800 和 B757-200 分别为机型 1 和机型 2,设变量 Xi,j.其中 101i142,j=1 或 2。且对于变量 Xi,j=0 或 1,当 Xi,j=1,表示第 i 条航线由第 j 种飞机运营。 例如,X101,1=1,则第 101 号航班由第 1 种机型飞行,且 X101,2=0 3、机场时间节点飞机流变量 设变量 Gm,j.表示对于第 m 个节点上第 j 种机型的数量,例如,GA1,1 表示 A 机场第 1 个节点上第 1 种机型的数量4、目标函数
5、 以总成本最小为指派目标,而单个航班的飞机总成本包括两部分: 1) 营运成本 2) 旅客溢出成本 1)营运成本的表达式为: B737-800 架数*162*0.34*航班的轮挡距离+ B757-200 的架数*200*0.36*该航班的轮挡距离 2)旅客溢出成本的表达式为: 航班旅客溢出的期望值*1.2*该航班的轮挡距离*0.85。 详细计算公式如下:5、营运成本 B737-800 :C1=iXiiDistSCASM1,*)(* 101i142 B757-200 :C2=iXiiDistSCASM2,*)(* 101i142 CASM:座英里成本, S:座位数, Dist (i):第 i 条航
6、线轮挡距离 6、旅客溢出成本 B737-800 :C1= 旅客溢出数期望值 *票价 =iXiiDistRASMdE1,*)(*)(%)151( (101i142) B757-200 : C2 = 旅客溢出数期望值*票价 =iXiiDistRASMdE2,*)(*)(%)151( (101i142) (RASM:座英里收益) 两种机型旅客溢出期望值: E(d)=cdddfcd)()( =/)()(2/1dccxe-(x2/2)dx :航班需求量的期望,:需求的标准差, c:飞机的座位数三、模型建立及求解1、目标函数的建立 Min C=C1+C2+C1+C2 2、节点飞机平衡条件对于每种机型,在时
7、空网络中各节点的飞机流必须保持平衡。如某机型有一定数量航班到达,一定数量航班出发,因此该节点后该机型留下飞机数=原有飞机数+到达飞机数-离开飞机数。下面会对各个机场的具体节点飞机流量状况进行解释说明。 (已设定 B737-800 为机型 1, B757-200 为机型 2) 如分析 A 机场的各机型飞机流量状况。根据节点平衡条件,节点 A1 的约束条件: GA1,1=GA6,1-X110,1 (或 GA1,2=GA6,2-X110,2) 。其中 GA1,1 代表该机场节点现存飞机数目,其中 A代表机场,A1,1 中前一个 1 代表机场 A 的第一个节点,第二个1 代表机型 1。 X110,1
8、中代表飞入或飞出飞机架数,只能为 0或 1,110 代表航班代号,1 代表第一种机型。以下约束条件具有相似的意义,将不作详细阐述。并且只详尽列出节点 A 的约束条件,其他节点的情况可以同理写出。机型 1 约束条件如下: 节点 A2 约束条件: GA2,1=GA1,1+x131,1 节点 A3 约束条件: GA3,1=GA2,1-x111,1 节点 A4 约束条件: GA4,1=GA3,1+x132,1 节点 A5 约束条件: GA5,1=GA4,1-x112,1 节点 A6 约束条件: GA6,1=GA5,1+x133,1 机型 2 约束条件如下: 节点 A2 约束条件: GA2,2=GA1,
9、2+x131,2) 节点 A3 约束条件: GA3,2=GA2,2+x111,2) 节点 A4 约束条件: GA4,2=GA3,2+x132,2) 节点 A5 约束条件: GA5,2=GA4,2+x112,2) 节点 A6 约束条件: GA6,2=GA5,2+x133,2)3、飞机总数约束 每基地机场各机型过夜飞机数之和不超过该型飞机的总数 对于机型 1,有如下的总数约束: GA6,1+GB6 ,1+GI6,1+GJ40 ,1+GL6,1+GM6,1+GO6,1+GS6,19 对于机型 2,有如下的总数约束: GA6,2+GB6 ,2+GI6,2+GJ40 ,2+GL6,2+GM6,2+GO6
10、,2+GS6, 26 4、各航线飞机数限制 Xi,k=1 i 代表航线,如 101;k 代表机型,只能是 1 和 2。 具体表达如:X101,1+X101,2=1,并且 X101,1 和 X101,2 只能一个取 0,一个取 1 5、结果分析 (1)各条航线机型指派结果 Variable Value Variable Value X( 101, 1) 1.000000 X( 101, 2) 0.000000X( 102, 1) 1.000000 X( 102, 2) 0.000000 X( 103, 1) 1.000000 X( 103, 2) 0.000000 X( 104, 1) 1.00
11、0000 X( 104, 2) 0.000000X( 105, 1) 1.000000 X( 105, 2) 0.000000 X( 106, 1) 1.000000 X( 106, 2) 0.000000 X( 107, 1) 1.000000 X( 107, 2) 0.000000 X( 108, 1) 1.000000 X( 108, 2) 0.000000X( 109, 1) 1.000000 X( 109, 2) 0.000000 X( 110, 1) 0.000000 X( 110, 2) 1.000000X( 111, 1) 0.000000 X( 111, 2) 1.00000
12、0 X( 112, 1) 1.000000 X( 112, 2) 0.000000 X( 113, 1) 0.000000 X( 113, 2) 1.000000 X( 114, 1) 0.000000 X( 114, 2) 1.000000 X( 115, 1) 1.000000 X( 115, 2) 0.000000 X( 116, 1) 1.000000 X( 116, 2) 0.000000 X( 117, 1) 0.000000 X( 117, 2) 1.000000 X( 118, 1) 1.000000 X( 118, 2) 0.000000 X( 119, 1) 1.00000
13、0 X( 119, 2) 0.000000 X( 120, 1) 1.000000 X( 120, 2) 0.000000 X( 121, 1) 1.000000 X( 121, 2) 0.000000 X( 122, 1) 1.000000 X( 122, 2) 0.000000 X( 123, 1) 1.000000 X( 123, 2) 0.000000 X( 124, 1) 1.000000 X( 124, 2) 0.000000 X( 125, 1) 1.000000 X( 125, 2) 0.000000 X( 126, 1) 1.000000 X( 126, 2) 0.00000
14、0 X( 127, 1) 1.000000 X( 127, 2) 0.000000 X( 128, 1) 1.000000 X( 128, 2) 0.000000 X( 129, 1) 1.000000 X( 129, 2) 0.000000 X( 130, 1) 1.000000 X( 130, 2) 0.000000 X( 131, 1) 0.000000 X( 131, 2) 1.000000 X( 132, 1) 1.000000 X( 132, 2) 0.000000 X( 133, 1) 0.000000 X( 133, 2) 1.000000 X( 134, 1) 1.00000
15、0 X( 134, 2) 0.000000 X( 135, 1) 0.000000 X( 135, 2) 1.000000 X( 136, 1) 0.000000 X( 136, 2) 1.000000 X( 137, 1) 0.000000 X( 137, 2) 1.000000 X( 138, 1) 1.000000 X( 138, 2) 0.000000 X( 139, 1) 1.000000 X( 139, 2) 0.000000 X( 140, 1) 1.000000 X( 140, 2) 0.000000 X( 141, 1) 1.000000 X( 141, 2) 0.00000
16、0 X( 142, 1) 1.000000 X( 142, 2) 0.000000 6、约束条件检验; (1)飞机总数约束: 对于机型 1:G( 1, 6, 1) 0.000000 0.000000 G( 2, 6, 1) 1.000000 0.000000 G( 3, 6, 1) 0.000000 0.000000 G( 4, 42, 1) 3.000000 0.000000 G( 5, 6, 1) 2.000000 0.000000 G( 6, 6, 1) 0.000000 0.000000 G( 7, 6, 1) 1.000000 0.000000 G( 8, 6, 1) 2.00000
17、0 0.000000 飞机总数为:1+3+2+1+2=9,满足条件 对于机型 2: G( 1, 6, 2) 1.000000 0.000000 G( 2, 6, 2) 0.000000 0.000000 G( 3, 6, 2) 0.000000 0.000000 G( 4, 42, 2) 2.000000 0.000000 G( 5, 6, 2) 0.000000 0.000000 G( 6, 6, 2) 2.000000 0.000000 G( 7, 6, 2) 0.000000 0.000000 G( 8, 6, 2) 0.000000 0.000000 飞机总数为:1+2+2=5 ,小于
18、 6,满足条件 7、飞机流平衡分析 仅取机场 A,第一种机型为例: G( 1, 1, 1) 0.000000 X( 110, 1) 0.000000 G( 1, 2, 1) 0.000000 X( 131, 1) 0.000000 G( 1, 3, 1) 0.000000 X( 111, 1) 0.000000 G( 1, 4, 1) 1.000000 X( 132, 1) 1.000000 G( 1, 5, 1) 0.000000 X( 112, 1) 1.000000 G( 1, 6, 1) 0.000000 X( 133, 1) 0.000000 G(1,1,1)=G(1,6,1)-x(
19、10,1); 0=0-0 G(1,2,1)=G(1,1,1)x(31,1)0=0+0 G(1,3,1)=G(1,1)-x(11,1) 0=0-0 G(1,4,1)=G(1,3,1)x(32,1) 1=0+1 G(1,5,1)=G(1,4,1)-x(12,1)0=1-1 G(1,6,1)=G(1,5,1)+x(33,1) 0=1-1 8、结论 (1)飞机机型指派结果 用 B737-800 机型执行的航线为: 101,102,103,104,105,106,107,108,109,112,115,116,118,119,120,121, 122,123,124,125,126,127,128,12
20、9,130,132,134,138,139,140,141,142 用 B757-200 机型执行的航线为:110,111,113,114,117,131,133,135,136,137四、总结在这次课程设计中,我们主要是以小组的形式来完成课程设计的任务,小组中的五个成员通过不同的分工来共同完成。通过课程设计的完成我们更加清楚理论和实践相结合的重要性,同时也使我们更加注重团队的合作,在以后的学习或者工作中我们可以拥有更强的团队意识。有些地方不算完整,可能是由于学习的不够扎实造成的,在以后的学习中会吸取教训五、参考资料 运筹学课程设计指导书 南京航空航天大学2010 实用运筹学 清华大学出版社
21、韩中庚主编 2008 五、附录Model: sets: flight/OLE(data.xls,Flight_No)/:Dist,Demand,std_dev,Orign_AP,Dist_AP; Airport/18/; !8 个机场; airline/142/; !共 42 条航线; Timenode/16/; !非基地 J 机场的 7 个机场,每个均有 6 个节点; 节点 L29 DEP 18:10 136 节点 L34 ARR20:30 节点 L33 DEP 20:00 节点 L32 ARR19:30 节点 L30 DEP 19:00 节点 L31 ARR19:10 节点 L37 DEP
22、 21:00 节点 L36 ARR20:55 节点 L38 ARR21:15 节点 L35 ARR20:50 124 127 139 130 节点 L39 DEP 21:30 109 121 103 106 115 112 Planetype/1,2/:seat,casm; !两种机型,座位数和座英里成本;flight_assign(flight,Planetype):x; !由航线和机型组成的指派二维变量 ;Airparking(Airport,airline,Planetype):G; !由机场,节点和机型组成的三维变量;link/184/:flightno,flag; !以对各机场的时间
23、线节点为序的集; endsets data: Dist,Demand,std_dev,Orign_AP,Dist_AP=OLE(D:data1.xls); !轮挡距离、航班需求量、需求标准差、起飞机场及降落机场可从 excel 表格中直接读去数据; flightno,flag=ole(D:data2.xls);seat=162,200; casm=0.34,0.36; rasm=1.2; Recapture=0.15; enddata !objective 目标函数 ; min=sum(flight_assign(i,j):x(i,j)*casm(j)*seat(j)*Dist(i)+x(i,
24、j)*rasm*Dist(i)*std_dev(i)*(1-Recapture)*psl(seat(j)-Demand(i)/std_dev(i); !目标为成本最小,运输成本和旅客溢出成本; !constraint 约束条件; for(flight_assign:bin(x); !对每条航线的机型,指派后只能为 0 或1; for(flight(i):sum(Planetype(j):x(i,j)=1); !对每条航线,两种机型只能任选其一,故和为 1; !各机场的节点飞机流平衡条件如下: !第一个机场(即 A 机场); G(1,1,1)=G(1,6,1)-x(10,1); G(1,1,2)
25、=G(1,6,2)-x(10,2); !对两种机型过夜节点与第一个节点联系; for(planetype(k):for(Timenode(j)|j#ge#2:G(1,j,k)=G(1,j-1,k)+x(flightno(j)-100,k)*flag(j); !按时间线上的节点顺序,建立平衡条件; !第二个机场(即B 机场) ; G(2,1,1)=G(2,6,1)-x(16,1); G(2,1,2)=G(2,6,2)-x(16,2); for(planetype(k):for(Timenode(j)|j#ge#2:G(2,j,k)=G(2,j-1,k)+x(flightno(j+6)-100,k
26、)*flag(j+6); !第三个机场(即 I 机场); G(3,1,1)=G(3,6,1)+x(40,1); G(3,1,2)=G(3,6,2)+x(40,2); for(planetype(k):for(Timenode(j)|j#ge#2:G(3,j,k)=G(3,j-1,k)+x(flightno(j+12 )-100,k)*flag(j+12); !第四个机场(即 J 机场); G(4,1,1)=G(4,42,1)-x(40,1);G(4,1,2)=G(4,42,2)-x(40,2); for(planetype(k):for(airline(j)|j#ge#2:G(4,j,k)=G
27、(4,j-1,k)+x(flightno(j+18)-100,k)*flag(j+18); !第五个机场(即 L 机场); G(5,1,1)=G(5,6,1)-x(1,1); G(5,1,2)=G(5,6,2)-x(1,2); for(planetype(k):for(Timenode(j)|j#ge#2:G(5,j,k)=G(5,j-1,k)+x(flightno(j+60)-100,k)*flag(j+60); !第六个机场(即 M 机场); G(6,1,1)=G(6,6,1)-x(13,1);G(6,1,2)=G(6,6,2)-x(13,2); for(planetype(k):for(
28、Timenode(j)|j#ge#2:G(6,j,k)=G(6,j-1,k)+x(flightno(j+66)-100,k)*flag(j+66); !第七个机场(即 O 机场); G(7,1,1)=G(7,6,1)-x(7,1); G(7,1,2)=G(7,6,2)-x(7,2); for(planetype(k):for(Timenode(j)|j#ge#2:G(7,j,k)=G(7,j-1,k)+x(flightno(j+72)-100,k)*flag(j+72); !第八个机场(即 S 机场); G(8,1,1)=G(8,6,1)-x(4,1); G(8,1,2)=G(8,6,2)-x
29、(4,2); for(planetype(k):for(Timenode(j)|j#ge#2:G(8,j,k)=G(8,j-1,k)+x(flightno(j+78)-100,k)*flag(j+78); !每种机型的飞机总数构成的过夜飞机约束条件如下: !第一种机型; G(1,6,1)+G(2,6,1)+G(3,6,1)+G(4,42,1)+G(5,6,1)+G(6,6,1)+G(7,6,1)+G(8,6,1)=9; !第二种机型; G(1,6,2)+G(2,6,2)+G(3,6,2)+G(4,42,2)+G(5,6,2)+G(6,6,2)+G(7,6,2)+G(8,6,2)=6; end