我有不同规模的志愿者团队(从5人到250人),需要与志愿者网站配对,请求不同数量的志愿者(从3人到400人)。我需要将志愿者团体与志愿者网站配对,需要时将志愿者团体分开,需要时将多个志愿者团体与单个志愿者网站配对不过,我想尽量减少任何分裂。有没有一种算法可以将这些最佳配对?这是否属于一个已知类型的计算机科学问题,有维基百科网页,这将有助于如有任何建议,我们将不胜感激!
最佳答案
这个问题可以解释为运输问题的一个变种考虑具有源节点(志愿者组,用i
表示)和目标节点(志愿者站点,用j
表示)的二部图。假设志愿者总数等于或大于各站点的总需求。然后目标是最小化i → j
中使用的链接数。
该问题可以表示为一个混合整数规划模型,并用现成的mip求解器求解。模型可以如下所示:
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