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'

Я пробовал много разных стратегий реализации проблемы, но каждая приводила меня к этой. Может кто-то мне помочь, пожалуйста?

0 ответов

Другие вопросы по тегам