Algorithm 算法-匹配学生考试中心

Algorithm 算法-匹配学生考试中心,algorithm,Algorithm,我有一个问题,就是把学生分组到最近的考试中心。以下是条件/约束: 有X个学生和Y个考试中心。每个中心将容纳不同数量的学生 考试中心总容量的最大值可以大于学生人数,但不能小于学生人数 一名学生可以与多个考试中心保持最小距离 所有考试中心将同时举行考试 例如,有11500名学生和15个考试中心。5个中心(1至5个)将容纳1500名学生,3个中心容纳600名学生(6至8名),其他7个中心(9至15名)将容纳350名学生 我开发了以下内容: 一个数据库表,其中包含每个考试中心的学生位置(注册地址)。像下

我有一个问题,就是把学生分组到最近的考试中心。以下是条件/约束:

  • 有X个学生和Y个考试中心。每个中心将容纳不同数量的学生
  • 考试中心总容量的最大值可以大于学生人数,但不能小于学生人数
  • 一名学生可以与多个考试中心保持最小距离
  • 所有考试中心将同时举行考试
  • 例如,有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
    
  • 但我不知道如何进一步进行。我相信这是某种算法问题。如果有人能给我一些建议,我将不胜感激


    提前多谢

    我建议你在这里看看遗传算法

    以学生人数和他们的作业为例 您的适应度函数可以为学生提供更大的价值,重叠更少

    我在大学时就用这种方式解决了学生/日程安排问题,效果很好

    所以我相信遗传算法是一种方法


    祝你好运

    我知道您正在寻找一个最佳解决方案-(所有学生都被分配到最近的考试中心)。为此,我们将把问题简化为

    将问题简化为一个二部1图
    G=(V,E)
    ,这样
    V={students}U{examination centers}U{S,T}
    (所有学生、所有考试中心和两个额外的顶点S和T)。
    E=CLOSESTS U{S}X{考试中心}U{students}X{T}
    (S连接到所有中心,所有学生连接到T,CLOSESTS-我们现在将讨论)。
    其中
    CLOSESTS={(考试,成绩)|考试是离学生sutd最近的考试中心}

    我们还需要一个权重函数
    f:E->N
    ,以便:

    f(u,v) = capcity if u=S, v=examination center
    f(u,v) = 1 if u is examination center and v is student
    f(u,v) = 1 if u is student and v is T
    
    生成的图形应类似于此示例:

    现在,运行最大流算法,如。如果最大流量“进入”T为#num_studets,则存在一个最优解,并由算法2实现的流量网络表示。“最大流量”算法将计算每条边的流量,这相当于如何在不突破容量限制的情况下将学生分配到中心

    证明:

    • 如果有#学生的最大流量,则使用所有边(学生,T), 所有学生都有一个输入流,因此被分配。此外,每个考试中心最多分配
      能力
      学生,并且
      解决方案是有效的
    • 如果最大流量小于#学生,则存在 未从考试中心获得流量的学生,并且 因此没有赋值,也没有最优解

    (1) 不完全是一个二部图,因为我们添加了S和T,没有它-它是。
    (2) 根据,由于所有权重都是整数,所以有一个整数解。

    (我知道这是两年前提出的,但可能会对某人有所帮助)

    它可以通过匈牙利算法()来解决,创建一个二部图,如下所示:

    • 左侧节点表示学生
    • 右侧节点代表15个中心的座位
    • 从每个学生到每个座位插入一个边缘,重量=到中心的距离
    • 然后计算最小权重匹配
    问题:矩阵的大小为11500²

    解决方案:可以使用以下算法对问题进行建模,而无需将中心“扩展”到其座位(我将不详细介绍):


    这似乎是广义赋值问题的一个例子,它是NP难问题。维基百科有一个很好的解释,还有一个贪婪的算法,它不能保证是最优的。如果“代理”是位置,“任务”是学生,则代理/任务公式与您的问题相对应。成本是从地点到学生的距离,每个学生的利润是1。也许一个最大流量算法可以适合这里谢谢你的帮助。我将有一个最大流量以及基因的外观algorithms@kwytse:不客气。请注意,遗传算法(GA)是启发式的,不会找到最优解。如果你真的想找到最佳的解决方案,并将每个学生分配到其最近的中心-最大流量是一条路要走。另请参见编辑-我添加了一张照片,用来演示图形的外观。