Optimization 如何向Google ortools添加一个值数组,而不是一个下限和上限?

Optimization 如何向Google ortools添加一个值数组,而不是一个下限和上限?,optimization,python-3.5,scheduling,constraint-programming,or-tools,Optimization,Python 3.5,Scheduling,Constraint Programming,Or Tools,在文档和我能找到的所有示例中。。。至少就护士排班而言,每个人都只是在{1,4}的搜索空间内声明班次值,比如说班次1,2,3,4 solver = pywrapcp.Solver("schedule_shifts") num_nurses = 4 num_shifts = 4 # Nurse assigned to shift 0 means not working that day. num_days = 7 # [START] # Create shift var

在文档和我能找到的所有示例中。。。至少就护士排班而言,每个人都只是在{1,4}的搜索空间内声明班次值,比如说班次1,2,3,4

solver = pywrapcp.Solver("schedule_shifts")

  num_nurses = 4
  num_shifts = 4     # Nurse assigned to shift 0 means not working that day.
  num_days = 7
  # [START]
  # Create shift variables.
  shifts = {}

  for j in range(num_nurses):
    for i in range(num_days):
      shifts[(j, i)] = solver.IntVar(0, num_shifts - 1, "shifts(%i,%i)" % (j, i))
  shifts_flat = [shifts[(j, i)] for j in range(num_nurses) for i in range(num_days)]

  # Create nurse variables.
  nurses = {}

  for j in range(num_shifts):
    for i in range(num_days):
      nurses[(j, i)] = solver.IntVar(0, num_nurses - 1, "shift%d day%d" % (j,i))
调用
solver.IntVar(lowerbound,upperbound,…)

我想要
IntSolver([可以选择的可用值],…)

我创建了一个矩阵,列从第一天到最后一天都在移动。我的行索引并不重要,但在每一天/轮班列中,我都有护士的索引值,按轮班出价最高者的降序排列。我想创建一个约束,如果我选择一名护士,我会从列中选择通过其他约束允许的最大出价,但是我不知道如何做到这一点,因为ortools使用python
IntVar
的文档有限,您能试试吗

IntVar([值…],“名称”)

它应该会起作用


请参见

是,首先创建包含所有可能值的变量。然后,选择最佳解决方案是目标的一部分。