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 件のコメント:
コメントを投稿