KeyError в ограничении Python в проблеме планировщика csp
Мне нужно создать планировщик csp, который давал бы набор студентов с именем, компетенцией, неспособностью и набор задач с именем, competence_required, длительностью (или лучше показать это на графике), какую задачу должен выполнить студент. Я только начинаю создавать этот планировщик, поэтому попробовал использовать несколько переменных, но не смог устранить ошибку. Если у учащегося есть способности, позволяющие выполнить большее количество задач, ему можно поручить несколько задач, если общее время не превышает его неспособности. Мне нужно закодировать его в будущем, чтобы я мог увеличить количество студентов и задач, импортирующих CSV-файл с помощью панд.
Это код:
from constraint import *
students = (("Name1", 10, "Competence1"),("Name2", 8, "Competence2"))
tasks = (("Task1", 4, "Competence1"),("Task2", 2, "Competence2"))
problem = Problem()
variables = tuple([(student + task) for student in students for task in tasks])
for variable in variables:
problem.addVariable(variable, [False, True])
for variable in variables:
print(variable)
problem.addConstraint(lambda variable: True if variable[2] == variable[5] and variable[1] >= variable[4] else False , variable)
solutions = problem.getSolutions()
if solutions:
print("Solutions:")
for solution in solutions:
for key in solution.keys():
if solution[key]:
print(key, solution[key])
else:
print("No solution")
Ошибка:
Traceback (most recent call last):
File "main.py", line 93, in <module>
solutions = problem.getSolutions()
File "/home/runner/CSP-esempio-libro-funzionante/venv/lib/python3.10/site-packages/constraint/__init__.py", line 268, in getSolutions
domains, constraints, vconstraints = self._getArgs()
File "/home/runner/CSP-esempio-libro-funzionante/venv/lib/python3.10/site-packages/constraint/__init__.py", line 309, in _getArgs
vconstraints[variable].append((constraint, variables))
KeyError: 'Nome1'
Я пробовал много разных стратегий реализации проблемы, но каждая приводила меня к этой. Может кто-то мне помочь, пожалуйста?