python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...
我正在从here修改代码,我希望能够为某一天添加不同长度的轮班(例如,我希望星期五/第4天只有2个轮班)。我的代码总是以错误代码结尾。我相信这是由于我设定的一些限制的内部问题。在
我在类似的程序上看到了一些关于StackOverflow的帖子,但是找不到一个能解决我的具体问题的帖子。在from ortools.sat.python import cp_model
class employeePartialSolutionPrinter(cp_model.CpSolverSolutionCallback):
"""Print intermediate solutions."""
def __init__(self, shifts, num_employee, num_days, num_shifts, sols):
cp_model.CpSolverSolutionCallback.__init__(self)
self._shifts = shifts
self._num_employee = num_employee
self._num_days = num_days
self._num_shifts = num_shifts
self._solutions = set(sols)
self._solution_count = 0
def on_solution_callback(self):
self._solution_count += 1
if self._solution_count in self._solutions:
print('Solution %i' % self._solution_count)
for d in range(self._num_days):
print('Day %i' % d)
for n in range(self._num_employee):
is_working = False
for s in range(self._num_shifts):
if self.Value(self._shifts[(n, d, s)]):
is_working = True
print(' Employee %i works shift %i' % (n, s))
if not is_working:
print(' Employee {} does not work'.format(n))
def solution_count(self):
return self._solution_count
model = cp_model.CpModel()
solver = cp_model.CpSolver()
num_employee = 5
num_shifts = 5
num_days = 5
all_employee = range(num_employee)
all_shifts = range(num_shifts)
all_days = range(num_days)
# Normal Hours
# Monday-Thursday Shift 0-4
# Friday Shift 0-1
friday_deduct = 3
shifts = {}
for n in all_employee:
for d in all_days:
if d == 4:
for s in range(num_shifts-friday_deduct):
shifts[(n, d, s)] = model.NewBoolVar('shift_n%id%is%i' % (n, d, s))
else:
for s in all_shifts:
shifts[(n,d,s)] = model.NewBoolVar('shift_n%id%is%i' % (n,d,s))
"""
Constraints (Normal Time)
"""
# Each Shift is assigned to a single person per day
# Shift 2 need to be assigned to 3 person
# Shift 1 and 3 need to be assigned to 2 person
for d in all_days:
if d == 4:
for s in range(num_shifts-friday_deduct):
if s == 1:
model.Add(sum(shifts[(n, d, s)] for n in all_employee) == 2)
else:
model.Add(sum(shifts[(n, d, s)] for n in all_employee) == 1)
else:
for s in all_shifts:
if s == 2 :
model.Add(sum(shifts[(n,d,s)] for n in all_employee) == 3)
elif s == 3 or s == 1:
model.Add(sum(shifts[(n, d, s)] for n in all_employee) == 2)
else:
model.Add(sum(shifts[(n,d,s)] for n in all_employee) == 1)
#Each nurse works at most 10 shift per week, at least 4 shift per week
for n in range(num_employee):
week = []
for d in all_days:
if d == 4:
for s in range(num_shifts-friday_deduct):
week.append(shifts[(n,d,s)])
# week.append(sum(shifts[(n, d, s)] for s in range(num_shifts-friday_deduct)))
else:
for s in all_shifts:
week.append(shifts[(n,d,s)])
# week.append(sum(shifts[(n,d,s)] for s in all_shifts))
model.Add(sum(week) >= 4)
model.Add(sum(week) <=10)
solver.parameters.linearization_level = 0
a_few_solutions = range(5)
solution_printer = employeePartialSolutionPrinter(shifts, num_employee,
num_days, num_shifts, a_few_solutions)
solver.SearchForAllSolutions(model, solution_printer)
这是Pycharm IDE的打印输出。当我从命令行运行它时,会出现窗口“Python has stop working”(Python已停止工作)。在
^{pr2}$
python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...相关推荐
- python自动客服排班_python自动排班表
from random import shuffle from random import sample import numpy as np import xlwt name_list = ['田' ...
- python自动收取蚂蚁森林能量_通过测试工具自动收取蚂蚁森林能量
本文仅为自动化工具appium的技术研究,请勿用于任何非正当用途 最近在家远程工作,结果作息更混乱了,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业" ♂️.于 ...
- php 微信机器人_微信小程序机器人自动客服功能
现在微信小程序在开发中比较流行,本文就教大家一种微信新功能:客服机器人的小程序,这个小程序也可以做其他类型的自动客服程序,在olami平台加上相应的问题和答案,就可以了. 整个小程序界面包含2个部分, ...
- 淘宝自动客服(旺旺机器人)
Technorati 标签: 自动客服, 旺旺机器人, 自动回复, 淘宝客服, 机器人 可以自动回答客户的提问,可以自动学习,手动培训和维护对话数据库. 支持基于正则表达式的匹配模板,更灵活更强大. ...
- 自动客服功能的微信小程序
(欢迎转载.本文源地址:http://blog.csdn.net/speeds3/article/details/77326122) 微信小程序最近比较火爆,所以抽空做了个客服机器人的小程序,来回答之 ...
- 自动客服回复HTML源码+立体飘落雪花动画特效HTML源码
简介: 1.自动客服回复HTML源码(打开html文件进行修改编辑更换你需要回复的消息内容) 点击最右下角的消息图标进行访问 返回的内容需在kefu.html进行修改即可 : 2.立体飘落雪花动画特效 ...
- python实现千牛客服自动回复语_千牛客服自动回复话术
淘宝千牛客服自动回复,如何设置成这种的,第一次询问时弹出这样的文字,买家想问的问题点击红字怎么进入 您如果是千牛,可以设置千牛机器人自动回复. 您截图中的提问选择方式实际意义不大,没有买家愿意这样的方 ...
- python 在线客服_后端Python3+Flask结合Socket.io配合前端Vue2.0实现简单全双工在线客服系统...
在之前的一篇文章中:为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统,详细介绍了websocket协议以及结合Django如何实现各种功能,本次我们 ...
- python 在线客服_如何利用Python实现简单全双工在线客服系统!这个有点东西!...
在之前的一篇文章中: 为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统 ,详细介绍了websocket协议以及结合Django如何实现各种功能,本次 ...
最新文章
- python生成指定长度的列表_python – 如何将列表或字符串解析为固定长度的块
- 项目2---机柜和物理服务器
- JQuery-- 获取元素的宽高、获取浏览器的宽高和垂直滚动距离
- 谈计算机知识对学生的作用,浅谈计算机在教学中的作用
- 【学生信息管理系统】——优化篇(一)
- java8 stream案例分析
- 一个牛人在美国的跳槽经历(有感)
- CentOS 7安装TigerVNC Server
- 正则表达式 四则运算 java_利用正则表达式判断四则运算表达式是否合法
- 使用Android Studio向SVN上传新项目
- SAP 用户出口合集
- mysql 05_MySQL 05
- Java后端开发的浪漫~情人节表白/告白代码(小白快速搭建项目)
- python论文用到的外文参考文献_论文外文文献怎么找?
- 几个系统级崩溃问题和h5加载页面崩溃问题及解决方案
- java爬虫(爬取豆瓣电影排行榜)
- 斗鱼实时计算平台的演进
- java 计算年龄_Java根据日期计算年龄——精确到天
- 不撞南墙不回头-深度优先搜索算法
- LwIP应用笔记(二):无操作系统支持下的RAW API移植