我有一个将学生分组到最近的考试中心的问题。这里是条件/约束:算法 - 匹配学生考试中心
- 有X学生和Y考试中心。每个中心将有不同数量的学生。
- 考试中心总数的最大容量可以大于学生人数,但不能小于。
- 学生可以有一个距离超过1个考试中心的最小距离。
- 考试将同时在所有考试中心举行。
例如,有11500名学生和15个考试中心。 5个中心(1至5个)将招收1500名学生,其中3名为600名(6至8名),另外7名(9至15名)将招收350名学生。
我已经开发出了如下:
与学生的位置(注册地址)给每个考试中心的数据库表。类似下面
Student ID Dist-Ex1 Dist-Ex2 ... Dist-Ex14 Dist-Ex15 1 10 70 20 50 2 25 43 5 105 ... 11499 35 12 35 55 11500 5 23 5 5
我可以添加存储最近的考试中心到每个学生的一列,并创建一个表像下面:
Ex centers Nearest for no. of students 1 2000 2 500 ... 14 150 15 500
但我不知道如何进一步进行。我相信这是一种算法问题。如果有人会给我一些想法,我将不胜感激。
非常感谢!
这似乎是一个实例广义分配问题,这是NP难。维基百科有一个很好的解释,以及一个贪婪的算法,不保证是最佳的。 HTTP://en.wikipedia。org/wiki/Generalized_assignment_problem如果“代理商”是地点,“任务”是学生,则代理商/任务公式对应于您的问题。成本是从地点到学生的距离,每个学生的利润为1。 – dsg
也许最大流量算法可以适合这里 – amit