0

ドキュメントと私が見つけることができるすべての例では...少なくとも看護師のスケジューリングに関しては、誰もが{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([available values that you can choose], ...)

初日から最終日まで列が流れるように、すべてのシフトのマトリックスを作成しました。私の行のインデックスは重要ではありませんが、各日/シフトの列には、そのシフトに最も高い入札を行った看護師のインデックス値が降順で表示されています。次に、看護師を選択した場合に、列から他の制約を介して許可される最大入札額を選択する制約を作成したいのですが、限られたドキュメントまたはツールが python で持っていることを考えると、その方法がわかりませんIntVar

4

1 に答える 1