Hello i am a beginner with python and am trying to implement a nurse scheduling model which i found on google or-tools into python cplex. I have porblems when trying to setup the constraints: "Each shift is assigned to exactly one nurse in the schedule period" and "Each nurse works at most one shift per day" With my current code i get the following error message:
DOcplexException: Expecting constraint, got: \<generator object \<genexpr\> at 0x000001CBF38644A0\> with type: \<class 'generator'\>
What do i have to change in my code to set upt the constraints?
Thank you for every help in advance!
Thats my current code:
´´´´
from docplex.mp.model import Model
num_nurses = 4
num_shifts = 3
num_days = 3
all_nurses = range(num_nurses)
all_shifts = range(num_shifts)
all_days = range(num_days)
model = Model()
shifts = {}
for n in all_nurses:
for d in all_days:
for s in all_shifts:
shifts[(n, d, s)] = model.binary_var
for d in all_days:
for s in all_shifts:
model.add_constraint(shifts [(n, d, s)] for n in all_nurses) == 1
for n in all_nurses:
for d in all_days:
model.add_constraint(shifts[(n, d, s)] for s in all_shifts) <=1
That is the full error message:
runfile('C:/Program Files/IBM/ILOG/CPLEX_Studio221/python/examples/cp/basic/untitled0.py', wdir='C:/Program Files/IBM/ILOG/CPLEX_Studio221/python/examples/cp/basic')
Traceback (most recent call last):
File "C:\Program Files\IBM\ILOG\CPLEX_Studio221\python\examples\cp\basic\untitled0.py", line 33, in <module>
model.add_constraint(shifts [(n, d, s)] for n in all_nurses) ==1
File "C:\Users\admin\anaconda3\lib\site-packages\docplex\mp\model.py", line 4049, in add_constraint
ct = self._add_constraint_internal(ct, ctname)
File "C:\Users\admin\anaconda3\lib\site-packages\docplex\mp\model.py", line 3549, in _add_constraint_internal
if self._prepare_constraint(ct, used_ct_name, check_for_trivial_ct=check_trivial):
File "C:\Users\admin\anaconda3\lib\site-packages\docplex\mp\model.py", line 3515, in _prepare_constraint
checker.typecheck_ct_to_add(ct, self, 'add_constraint')
File "C:\Users\admin\anaconda3\lib\site-packages\docplex\mp\tck.py", line 355, in typecheck_ct_to_add
self.fatal("Expecting constraint, got: {0!r} with type: {1!s}", ct, type(ct))
File "C:\Users\admin\anaconda3\lib\site-packages\docplex\mp\tck.py", line 256, in fatal
self._logger.fatal(msg, args)
File "C:\Users\admin\anaconda3\lib\site-packages\docplex\mp\error_handler.py", line 210, in fatal
raise DOcplexException(resolved_message)
DOcplexException: Expecting constraint, got: <generator object <genexpr> at 0x000002AAA9ACB2
00> with type: <class 'generator'>
#DecisionOptimization