日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...

發(fā)布時間:2024/7/23 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我正在從here修改代碼,我希望能夠?yàn)槟骋惶焯砑硬煌L度的輪班(例如,我希望星期五/第4天只有2個輪班)。我的代碼總是以錯誤代碼結(jié)尾。我相信這是由于我設(shè)定的一些限制的內(nèi)部問題。在

我在類似的程序上看到了一些關(guān)于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的打印輸出。當(dāng)我從命令行運(yùn)行它時,會出現(xiàn)窗口“Python has stop working”(Python已停止工作)。在

^{pr2}$

總結(jié)

以上是生活随笔為你收集整理的python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。