GraphGists

大多数人在从一个目的地前往另一个目的地旅行时,都在寻找最佳的航班选择。但是,“最佳航班选择”可以根据不同的标准来定义,例如机票价格、中途停留次数、旅行时间、运营航空公司等,而每个标准又建立在相当多的因素之上。虽然这个问题看起来非常类似于在给定图中查找最短路径,但有一个独特的问题需要解决,即在有中途停留的旅行中,我们只能选择那些出发时间晚于前一航班到达时间(以及最短时间缓冲)的航班。虽然许多网站都提供此类服务,但我使用GraphGist对这种情况进行了建模。

我的提议与许多其他可用程序的区别在于,在此模型中,除了旅客之外,还考虑了其他类型的实体,例如机场、航空公司和其他机构的组织系统,以便更好地了解不同航空公司的统计数据、目的地的受欢迎程度以及其用户在任何指定时间段内的用户群体。因此,这些数据可用于组织机构制定更好、更高效的提案计划。

fhRnvSI

美国运输统计局(Bureau of Transportation Statistics)每月发布航班数据集(开源)。为了更快地获得样本结果,此Gist使用了2015年11月30日的数据。使用了以下数据集中的变量

  • 机场缩写

  • 航班日期

  • 航班起点

  • 航班时长

  • 航班距离

  • 航班航空公司ID

  • 航班日期

虽然这些变量在许多方面都非常有信息量,但它们缺少一个非常重要的部分,即客户的成本和最终价格。对于每次航班,此模型假设了三种可能的机票选择:经济舱、商务舱和头等舱。对于每张机票,都会生成一个随机数,并分别根据机票等级乘以0.75、1和1.2,然后乘以航班时长(以分钟为单位的总旅行时间)。

以下是一些关于数据集的信息

机场数量

71

航班数量

2809

航空公司数量

2

查询

这个简单但经过精心设计的模型可以用来解决一些问题,其中一些问题在这里有所涉及

查找从给定起点(在本案例研究中为西雅图机场(SEA))出发的直飞航班的商务舱机票价格

MATCH (f:Flight)-[:ORIGIN]-(a:Airport { name:'ORD' })
WITH f
MATCH (t:Ticket { class:'business' })-[:ASSIGN]-(f)-[:DESTINATION]-(d:Airport)
RETURN d.name as Destination, t.price as Price, f.airline as Airline

查找从给定起点(在本案例研究中为西雅图机场(SEA))到给定目的地(在本案例研究中为旧金山机场)的中转航班

MATCH (a:Airport { name:'SEA' })-[:ORIGIN]-(f1:Flight)-[d:DESTINATION]-(a2:Airport)-[:ORIGIN]-(f2:Flight)-[:DESTINATION]-(a3:Airport { name:'SFO' })
where f1.date < f2.date
RETURN f1.date, f1.airline,  a2.name, f2.date, f2.airline, a3.name

查找从给定起点(在本案例研究中为西雅图机场(SEA))到给定目的地(在本案例研究中为旧金山机场)的中转航班

MATCH (a)<-[:ORIGIN]-(f:Flight)
WITH a.name AS Airport, f.airline AS Airline, count(f) AS total
ORDER BY total, Airport, Airline DESC
RETURN Airport, Airline, total

查找每个给定城市和/或航空公司有多少航班起飞

MATCH (a)<-[:DESTINATION]-(f:Flight)-[:ASSIGN]-(t:Ticket)
WITH a.name AS Airport, f.airline AS Airline, avg(t.price) AS Average
ORDER BY Airport, Average DESC
RETURN Airport, Average