【发布时间】:2019-11-12 14:55:21
【问题描述】:
有些人想从某个上车地点前往某个下车地点。所有上车地点都在城市 A 中,所有下车地点都在城市 B 中。其中 A != B。如何将人员聚集在一起,以最大限度地减少乘车到上车和下车的总距离。由于大多数汽车可载 4 人,因此希望使用每辆汽车的全部容量。每个集群将被分配给可以选择拒绝行程的汽车司机,在这种情况下,它将被传递给下一个司机。
【问题讨论】:
有些人想从某个上车地点前往某个下车地点。所有上车地点都在城市 A 中,所有下车地点都在城市 B 中。其中 A != B。如何将人员聚集在一起,以最大限度地减少乘车到上车和下车的总距离。由于大多数汽车可载 4 人,因此希望使用每辆汽车的全部容量。每个集群将被分配给可以选择拒绝行程的汽车司机,在这种情况下,它将被传递给下一个司机。
【问题讨论】:
请参阅此问题的答案:K-means algorithm variation with equal cluster size,了解用于聚类成相同大小的集群的算法(在您的情况下为 4)。
为了处理“不同城市”的约束,将每个客户定义为一个点元组,由他们在城市 A 的上车点和在城市 B 的下车点组成,并将两个客户之间的距离定义为距离之和他们的接送地点之间的距离和他们的下车地点之间的距离。元组列表的平均值将是由取货位置的平均值和下车位置的平均值组成的元组。定义这两个函数应该足以实现 K-means。
如果在一个城市行驶给定距离的平均时间比另一个城市要长,因为那里的交通状况较差,或者您将在高峰时间或其他任何时间在一个城市,您可能希望对这两个城市的距离进行不同的加权。
【讨论】: