Fru*_*TPH 2 algorithm simulation optimization grouping mathematical-optimization
假设我需要将 n=30 名学生分成 2 到 6 人一组,我从每个学生那里收集以下偏好数据:
学生姓名:汤姆
喜欢坐在一起:吉米、埃里克
不喜欢坐在一起:约翰、保罗、林戈、乔治
这暗示他们对全班其他他们没有提到的学生保持中立。
我如何才能最好地运行许多不同/随机分组安排的大量模拟,以便能够确定每个安排的分数,然后我可以选择“最佳”分数/安排?
或者,是否有任何其他方法可以计算出满足所有提供的约束的解决方案?
我想要一种可以每年在不同班级规模上重复使用的通用方法,但在每次模拟运行中,以下常量和变量都适用:
常量:学生总数、学生偏好
变量:团体规模、学生分组、不同团体安排/要测试的迭代次数
预先感谢您提供的任何帮助/建议/指示。
我相信您可以将其表述为一个显式的数学优化问题。
定义二元决策变量:
x(p,g) = 1 if person p is assigned to group g
0 otherwise
Run Code Online (Sandbox Code Playgroud)
我用了:
我使用了您的 28 人数据集和您的偏好矩阵(包含 -1,+1,0 元素)。对于组,我使用了 4 组 6 组和 1 组 4 组。解决方案如下所示:
---- 80 PARAMETER solution using MIQP model
group1 group2 group3 group4 group5
aimee 1
amber-la 1
amber-le 1
andrina 1
catelyn-t 1
charlie 1
charlotte 1
cory 1
daniel 1
ellie 1
ellis 1
eve 1
grace-c 1
grace-g 1
holly 1
jack 1
jade 1
james 1
kadie 1
kieran 1
kristiana 1
lily 1
luke 1
naz 1
nibah 1
niko 1
wiki 1
zeina 1
COUNT 6 6 6 6 4
Run Code Online (Sandbox Code Playgroud)
笔记: