如何优化这个整数规划约束问题?

2024-05-14 22:03:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图运行这个约束问题,但内存不足,S_{i}需要分配给188个助教班级中的一个班级的1975名学生,每个助教必须为其班级选择一个时间段TA_{j}。每个助教和学生在dfTAdfS数据帧中有8个表示的时隙

其想法是为每个学生分配一名助教,并为每个助教分配一个时间段。当然,一个班级中的所有学生都必须能够参加该课程,也必须能够担任助教

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()

如果有人知道如何解决这个问题或优化这个问题,这将是非常有用的


Tags: inforreturnrange学生timezoneproblem时间段

热门问题