我有不同规模的志愿者团队(从5人到250人),需要与志愿者网站配对,请求不同数量的志愿者(从3人到400人)。我需要将志愿者团体与志愿者网站配对,需要时将志愿者团体分开,需要时将多个志愿者团体与单个志愿者网站配对不过,我想尽量减少任何分裂。有没有一种算法可以将这些最佳配对?这是否属于一个已知类型的计算机科学问题,有维基百科网页,这将有助于如有任何建议,我们将不胜感激!

最佳答案

这个问题可以解释为运输问题的一个变种考虑具有源节点(志愿者组,用i表示)和目标节点(志愿者站点,用j表示)的二部图。假设志愿者总数等于或大于各站点的总需求。然后目标是最小化i → j中使用的链接数。
该问题可以表示为一个混合整数规划模型,并用现成的mip求解器求解。模型可以如下所示:
python - 将特定规模的志愿者群体与要求特定数量的志愿者的志愿者站点进行最佳匹配的算法?-LMLPHP
XUPI,J的项目表示XI,J的上限。
让我们生成一些随机数据:

----     18 PARAMETER size  volunteers in group

group1   47,    group2  212,    group3  140,    group4   79,    group5   76,    group6   60,    group7   91
group8  215,    group9   21,    group10 128,    group11 250,    group12 147


----     18 PARAMETER request  needed by site

site1 397,    site2 306,    site3  55,    site4 257,    site5  66


----     18 PARAMETER numvolunteer         =         1466  total volunteers
            PARAMETER numrequest           =         1081  total requests

将这些数据输入我们的模型时,我们得到以下结果:
----     44 VARIABLE y.L  link used

              site1       site2       site3       site4       site5

group2                        1
group3                                                1
group4                                                            1
group5                                    1
group8                        1
group10                                               1
group11           1
group12           1


----     44 VARIABLE x.L  flow

              site1       site2       site3       site4       site5

group2                       91
group3                                              140
group4                                                           66
group5                                   55
group8                      215
group10                                             117
group11         250
group12         147

09-17 01:52