OD对相似度计算效率优化:200k数据两两对比过慢求解决方案
OD对相似度计算的效率优化问题
我需要计算两条路线(每条路线对应一组origin-destination,即OD对)的相似度。查阅资料后,未找到同时考虑方向与长度的标准相似度度量方法,因此自行设计了如下度量公式:
相似度计算公式:$sim = \frac{L_1 + L_2}{L_1 + L_2 + D_{O_1O_2} + D_{D_1D_2}}$
其中:
- $L_1$、$L_2$分别为两条OD对的路线长度(通过哈弗辛公式计算)
- $D_{O_1O_2}$为两个起点间的距离,$D_{D_1D_2}$为两个终点间的距离
对应实现代码如下:
def calculate_similarity(o1_lat, o1_long, d1_lat, d1_long, o2_lat, o2_long, d2_lat, d2_long): l1 = mpu.haversine_distance((o1_lat, o1_long), (d1_lat, d1_long)) l2 = mpu.haversine_distance((o2_lat, o2_long), (d2_lat, d2_long)) od = mpu.haversine_distance((o1_lat, o1_long), (o2_lat, o2_long)) dd = mpu.haversine_distance((d1_lat, d1_long), (d2_lat, d2_long)) sim = (l1+l2)/(l1+l2+od+dd) return sim
当前核心问题是算法效率过低:200k组OD对需两两对比,现有计算资源下耗时约45天,恳请提供可行的替代方案。
内容的提问来源于stack exchange,提问作者Muriel
相关产品推荐
相关产品推荐

