Google Or-Tools员工安排。条件无法正常运行


筱梨
2025-03-24 01:13:14 (12天前)
  1. 我正在使用护士安排示例。我有3名员工2班和7天我有一个条件,如果一名员工在第1班工作,他/她第二天不能在班次0工作。这是我的代码......

2 条回复
  1. 0# 满目山河 | 2019-08-31 10-32



    根据你的约束:




    1. for n in all_nurses:
      for d in all_days:
      model.Add(sum([shifts[(n, d, 1)], shifts[(n, (d+1)%7, 0)]]) <= 1)

    2. </code>


    一个更好的配方是




    1. for n in all_nurses:
      for d in all_days:
      model.AddBoolOr([shifts[(n, d, 1)].Not(), shifts[(n, (d + 1) % 7, 0)].Not()])

    2. </code>


    参考:

    https://github.com/google/or-tools/blob/aa0c6c42a523ee4c23633585b86fb6d3e090f8c8/ortools/sat/samples/bool_or_sample_sat.py#L23-L28


登录 后才能参与评论