有个博主提出想使用python分析2024春运最忙路线,然后避开热门线路,分段购票回老家。因为铁路的售票系统估计也是以利益最大化的原则售卖数量很多的热门长线线路,目前有如下几个思路:
本来想通过选择站点查看对应的站点数据没想到,接口都没有,只调用了一个queryCC接口
示例代码
import pandas as pd
# 读取 CSV 文件
data = pd.read_csv("stations.csv")
# 计算每个站点的客运量、票价、距离
data["passenger_traffic"] = data["seat_count"] * data["occupancy_rate"]
data["distance"] = data["longitude"] ** 2 + data["latitude"] ** 2
# 计算每个站点的加权平均值
data["weighted_average"] = (data["passenger_traffic"] * data["price"] + data["distance"]) / 2
# 计算两点之间的最合适路线
def find_best_route(start_station, end_station):
# 找到起点和终点的加权平均值
start_value = data[data["station_name"] == start_station]["weighted_average"].values[0]
end_value = data[data["station_name"] == end_station]["weighted_average"].values[0]
# 计算所有路线的加权平均值
routes = []
for i in range(len(data)):
for j in range(i + 1, len(data)):
routes.append((data["station_name"].iloc[i], data["station_name"].iloc[j], (start_value - data["weighted_average"].iloc[i]) ** 2 + (end_value - data["weighted_average"].iloc[j]) ** 2))
# 选择加权平均值最小的路线
best_route = min(routes, key=lambda x: x[2])
return best_route
# 示例
start_station = "北京站"
end_station = "上海站"
best_route = find_best_route(start_station, end_station)
print("最合适路线:", best_route)
上面直接使用暴力搜索算法,最简单直接计算最短路线,当然你可以替换成如下的一些推荐算法,我这是一种简单、直接的算法,它枚举所有可能的路径,并选择最短的路径。对于规模较小的图,是一种有效的方法。
最短路径算法是图论中一个经典问题,旨在寻找图中两点之间的最短路径。最短路径算法有很多种,每种算法都有其优缺点,你可以根据需要进行选择。
算法示例:
def dijkstra(graph, start_node):
"""
Dijkstra 算法
Args:
graph: 图的邻接矩阵
start_node: 起始节点
Returns:
distance: 从起始节点到其他所有节点的最短路径距离
"""
# 初始化
distance = {}
for node in graph:
distance[node] = float("inf")
distance[start_node] = 0
# 未访问节点集合
unvisited = set(graph.keys())
# 循环访问所有节点
while unvisited:
# 找到距离最小的节点
min_node = min(unvisited, key=lambda node: distance[node])
# 将该节点标记为已访问
unvisited.remove(min_node)
# 更新相邻节点的距离
for neighbor, weight in graph[min_node].items():
if neighbor in unvisited:
distance[neighbor] = min(distance[neighbor], distance[min_node] + weight)
return distance
graph = {
"A": {"B": 10, "C": 5},
"B": {"A": 10, "C": 15, "D": 20},
"C": {"A": 5, "B": 15, "D": 10},
"D": {"B": 20, "C": 10}
}
start_node = "A"
distance = dijkstra(graph, start_node)
print(distance)
结果
在我们的日常生活中,无论是购买商品还是在社交媒体上与朋友互动,算法都在其中发挥着重要作用。许多人每天都会使用搜索引擎来获取所需的信息,并通过智能手机上的应用程序完成各种任务。同时,由于算法可以不断优化用户体验,使其更高效和便捷,因此算法在各行各业的应用也越来越广泛,成为了企业降本增效的重要手段。因此,我们可以看到,人总是在降本增效的路上越走越远,而算法技术也为我们的生活和工作带来了许多便利和机遇。
https://zh.chinamap360.com/%E4%B8%AD%E5%9B%BD%E7%81%AB%E8%BD%A6%E5%9B%BE
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。