根据路线的容量将公交车分配给路线

时间:2017-06-03 20:42:54

标签: algorithm math graph linear-algebra calculus

我在向公交车分配公交车方面遇到了问题。我有4辆公共汽车和4条路线。

巴士容量是每辆巴士的座位数。路线容量是路线每个站点的人数。路线实际上是多个站点的组合。

单个测试用例的一个例子是:

BUS CAPACITY          ROUTE CAPACITY
BUS 1 44 Seats        Route 1 30 Peoples
BUS 2 63 Seats        Route 2 50 Peoples
BUS 3 14 Seats        Route 3 40 Peoples
BUS 4 17 Seats        Route 4 17 Peoples

对于此问题,有许多具有多种组合的测试用例。路线和公共汽车的数量总是相等的。

我正在寻找一种有助于以最佳方式解决此问题的算法。

2 个答案:

答案 0 :(得分:0)

尝试

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

https://en.wikipedia.org/wiki/Euclidean_distance

接近基本上你正在寻找最佳匹配。

在外行人的术语中,您可能想要做的是找到最佳匹配路线到总线,其中最佳匹配定义为路由容量的总线容量最佳,即busCapacity - routeCapacity是最低正数。

一旦找到这样的匹配,他们就会被排除在问题世界之外。

然后为剩下的世界重复一遍。

最终产品是一切都匹配。

然而准备意外: -

您可能会耗尽所有可能的组合,并留下较小的容量和较大的路径容量。在这种情况下,您可以查找routeCapacity - busCapacity与最佳匹配项之间的差异。

这是为了让您知道自己无法获得服务的人数很少。

答案 1 :(得分:0)

你实际上并没有说出这里的最佳方法,这可能会改变最佳解决方案,但我倾向于对路线和公交车进行排序,然后将最大的公交车分配给人数最多的路线等待,下一个最大的公共汽车到这条路线,等待的人数最多,等等。

如果路线被指定为路线上没有足够座位的公共汽车,那么这里将会有不愉快的人,但是通过这项任务,所有带座位更多的公交车被分配到等待更多人的路线所以给一辆更大的公共汽车至少会留下没有座位的其他人。

有关匹配人员和公共汽车的更复杂方法,请查看https://en.wikipedia.org/wiki/Assignment_problem

最优化定义如何改变事物的一个例子是,如果你不关心烦恼的人数,而是关心人们没有获得席位的路线数量。在这种情况下,如果你有2,3,5,9人等候的路线和公共汽车1,2,4,8人,可能有意义的是将他们分配为2人 - 2个座位,3个人 - 4个座位,5个人 - 8个座位,9个人 - 1个座位,8个人没有座位而不是4个人,但所有这8个人只有1个路线。