python-constraint排班程序需求为0/2时不遵循约束问题排查
python-constraint 排班程序门店班次人数约束失效问题
我正在使用python-constraint开发自动排班程序,需匹配6家门店的班次需求与34名员工的可用性。目前已实现两个正常工作的约束:
- 员工每日仅能排1班
- 员工周工作天数符合请求范围
但第三个约束存在异常:门店各班次需匹配指定员工数(支持0、1、2人)——当需求为0或2时,程序始终分配1人,单独运行该约束时返回None。
相关代码片段
# 示例约束实现(根据实际场景调整) from constraint import Problem def match_shift_staff_requirement(shift_key, required_num, *assignments): # 统计分配到该班次的员工数 assigned_count = sum(1 for emp in assignments if emp == shift_key) return assigned_count == required_num # 问题初始化与约束添加示例 schedule_problem = Problem() # 假设已完成变量定义(员工-班次分配变量) # ... # 为每个门店班次添加人数约束 for shift in all_shifts: required = shift['required_staff'] # 获取该班次相关的员工分配变量 related_vars = [f"emp_{e}_shift" for e in all_employees] schedule_problem.addConstraint(match_shift_staff_requirement, [shift['id'], required] + related_vars)
示例输出
门店A早班需求为2人时,最终仅分配1人;需求为0人时,仍有1人被分配至该班次。
请求熟悉python-constraint的开发者帮忙定位问题并给出解决方案,或推荐适配这类排班场景的Python约束求解库。
内容的提问来源于stack exchange,提问作者jcb23
相关产品推荐
相关产品推荐

