Как я могу оптимизировать эту проблему ограничений целочисленного программирования? - PullRequest
0 голосов
/ 20 июня 2020
• 1000 . Каждый помощник учителя и ученик имеют свои выраженные временные интервалы из 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()

Если кто-нибудь знает, как решить эту проблему или оптимизировать ее, это будет очень полезно.

...