import sc3
import itertools
import math
def 夜勤ペア禁止(list0,list1):
for day in 全日:
if day< 制約開始日:
continue
or_list0=[]
or_list1=[]
#sc3.print(daydef[day]+"夜勤ペア禁止しました。")
for person in list0:
v1=sc3.GetShiftVar(person,day,'入り')#
sc3.print(staffdef[person]+' ')
or_list0.append(v1)
sc3.print('\n')
for person in list1:
v1=sc3.GetShiftVar(person,day,'入り')#
sc3.print(staffdef[person]+' ')
or_list1.append(v1)
v1=sc3.Or(or_list0)
v2=sc3.Or(or_list1)
sc3.AddSoft(~(v1&v2),"夜勤ペア禁止",5)
or_list0.clear()
or_list1.clear()
for person in list0:
v1=sc3.GetShiftVar(person,day,'明け')#
or_list0.append(v1)
for person in list1:
v1=sc3.GetShiftVar(person,day,'明け')#
or_list1.append(v1)
v1=sc3.Or(or_list0)
v2=sc3.Or(or_list1)
sc3.AddSoft(~(v1&v2),"夜勤ペア禁止",5)
sc3.print(daydef[day]+"夜勤ペア禁止しました。\n")
def 休日日勤ペア禁止(list0,list1):
for day in 今月休診日:
or_list0=[]
or_list1=[]
#sc3.print(daydef[day]+"夜勤ペア禁止しました。")
for person in list0:
v1=sc3.GetShiftVar(person,day,'日勤')#
or_list0.append(v1)
for person in list1:
v1=sc3.GetShiftVar(person,day,'日勤')#
or_list1.append(v1)
v1=sc3.Or(or_list0)
v2=sc3.Or(or_list1)
sc3.AddSoft(~(v1&v2),"休日日勤ペア禁止",5)
sc3.print(daydef[day]+"休日日勤ペア禁止しました。\n")
def 夜勤人数は最大1人(slist):
for day in 全日:
if day< 制約開始日:
continue
list0=[]
for person in slist:
v1=sc3.GetShiftVar(person,day,'入り')#
list0.append(v1)
sc3.AddSoft(sc3.SeqError(0,1,1,list0),"夜勤人数は最大1人",5)
def 休日日勤人数は最大1人(slist):
for day in 今月休診日:
list0=[]
for person in slist:
v1=sc3.GetShiftVar(person,day,'日勤')#
list0.append(v1)
sc3.AddSoft(sc3.SeqError(0,1,1,list0),"休日日勤人数は最大1人",5)
def 経験年数6年未満の組み合わせを禁止する( years ):
s=set() #set
for person in 経験年数属性.keys():
経験年数=経験年数属性[person]
s.add(経験年数)
for 経験年数 in s:
if 経験年数 * 2 < years:
slist=[]
for person in 経験年数属性.keys():
if 経験年数 == 経験年数属性[person]:
slist.append(person)
夜勤人数は最大1人(slist)
休日日勤人数は最大1人(slist)
for v in itertools.combinations(s,2):
if v[0]+v[1]< years:
list0=[]
list1=[]
sc3.print("経験年数"+str(v[0])+"年"+str(v[1])+"年\n")
for person in 経験年数属性.keys():
経験年数=経験年数属性[person]
if 経験年数==v[0]:
list0.append(person)
if 経験年数==v[1]:
list1.append(person)
夜勤ペア禁止(list0,list1)
休日日勤ペア禁止(list0,list1)
2020年3月31日火曜日
経験年数7年以上に変更
経験年数6年から、7年に変更依頼がありました。6年固定値から、経験年数を引き数とする対応を行いました。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿