我正在尝试运行这个约束问题,但内存用完了,S_{i}
是 1975 名学生,需要分配到 188 个助教班级之一,每个助教必须TA_{j}
为其班级选择一个时间段。每个教师助理和学生都有他们在 8 英寸dfTA
和dfS
数据帧中表达的时间段。
这个想法是为每个学生分配一个助教,并为每个助教分配一个时间段。当然,一个班级的所有学生都必须能够参加该课程以及助教。
import constraint
problem = constraint.Problem()
for i in range(0,1974):
problem.addVariable(f'S_{i}', range(0,187))
for i in range(0,187):
problem.addVariable(f'TA_{i}', range(0,8))
for S in range(0,1974):
for TA in range(0,187):
exec(f"""def timezone{S}_{TA}(s,t):
if s!=TA:
return True
if s==TA and (dfS.iloc[S,1+t]>0)*(dfTA.iloc[TA,t]>0):
return True
else:
return False
problem.addConstraint(timezone{S}_{TA}, ['S_{S}','TA_{TA}'])""")
problem.getSolutions()
如果有人知道如何解决或优化它,那将非常有用。