所以,我有一个安装问题。但我不确定这是不是我必须张贴的地方
上下文
基本上我想让不同的学习小组
但是,每个人每周都有一组可用的天数来参加一次学习。 每个人只能参加一个研究小组
可用性示例
StudentA = [Tuesday, Wednesday]
StudentB = [Wednesday, Saturday]
StudentC = [Saturday]
TutorA= [Tuesday, Friday]
TutorB = [Tuesday]
我必须让学习小组
我的方法
我正在使用python 3 我正在尝试生成所有可能的组合,并使用可用人员列表筛选实际可能的案例:
我用代码命名每个学生可用性组合:
导师也是这样
我使用itertools.compositions_和替换来制作所有
我将之前的两种组合组合组合成可能的研究组
我将所有团队组合起来生成场景
我使用限制进行过滤
问题
正如人们所期望的,组合和排列产生了大量的可能性
我可以接受将天数限制为三天
但我仍然无法为我的普通电脑提供可接受的性能
有没有更好的方法我没有看到?我在想象一些线性代数是否能把这个问题转化成一组方程,但不确定
Obs:学生和导师的数量要大得多(每人20到50人)
上下文
按每周7天的可用性指定学生
例如:
每行为一名学生(即本例中为4名学生) 每列表示一周中的一天(即7),可用或不可用分别为1或0
因此
[1, 1, 0, 0, 0, 0, 0]
表示学生0在一周的前两天,即周一和周二有空TA可用性也有类似规定
例如:
显示有三个助教,每天都有第一个助教
会议安排如下:
N未知,但我们可以选择一个适当的大值(即,如果N get只导致更多未分配给学生或助教的课程)
制约因素包括:
的目标是找到满足约束条件的学生和助教的作业
方法
使用谷歌ortools Contstraint Solver
ortools允许将这个组合问题描述为搜索问题
参考:ortools youtube Tutorail
代码
输出
指定的问题需要三个会话 星期一(星期一至三)和星期四(星期四至零)
相关问题 更多 >
编程相关推荐