<現象>
コンペティションの週毎のシフトオフフォーマットの中で、例えば、次のような記述がある場合があり、
その場合、正しく問題を解釈することが出来ません。
NU_27 Day Sat
NU_27 Late Sat
CT_57 Early Tue
CT_57 Late Tue
同一日に、同一の人が二つ以上のシフトをオフにする、という仕様です。この場合、GUIでは、一つのペナルティしか与えることが出来ないので、正しく解釈することが出来ません。
正しくは、
NU_27の土曜日がDayシフトでないのならばペナルティ10
NU_27の土曜日がLateシフトでないのならばペナルティ10
と独立にペナルティを与えないといけないのですが、GUIだけでは正しく実装出来ません。
仕方ないので、GUIでは、一つのペナルティを与え、Pythonで残りをカバーするという実装にしました。
<改善後の実装>
n080w4
REQUIREMENTS
Early HeadNurse (1,1) (1,1) (0,0) (1,1) (1,1) (1,1) (0,1)
Early Nurse (1,1) (1,1) (1,2) (2,2) (1,2) (1,1) (1,1)
Early Caretaker (5,7) (5,7) (4,9) (4,8) (3,7) (3,4) (1,2)
Early Trainee (1,2) (2,3) (1,2) (2,2) (2,2) (0,1) (1,2)
Day HeadNurse (2,2) (1,1) (0,0) (1,1) (0,0) (1,1) (1,1)
Day Nurse (2,2) (2,2) (1,1) (1,1) (2,2) (1,1) (1,1)
Day Caretaker (5,8) (3,6) (4,7) (4,7) (4,7) (3,4) (3,3)
Day Trainee (2,3) (1,3) (1,4) (2,2) (2,2) (0,0) (0,1)
Late HeadNurse (0,0) (1,1) (1,1) (1,1) (1,1) (0,1) (1,1)
Late Nurse (1,1) (2,2) (2,2) (2,2) (1,2) (1,1) (1,1)
Late Caretaker (6,8) (4,6) (6,8) (3,6) (5,7) (2,3) (2,3)
Late Trainee (2,3) (1,2) (1,3) (2,3) (0,3) (1,1) (0,0)
Night HeadNurse (0,1) (0,0) (1,1) (1,1) (1,1) (1,1) (1,1)
Night Nurse (1,1) (1,1) (1,2) (2,2) (2,2) (1,1) (1,1)
Night Caretaker (4,7) (5,7) (5,10) (5,8) (3,7) (3,3) (3,4)
Night Trainee (2,3) (2,2) (1,3) (2,4) (2,3) (1,2) (1,1)
SHIFT_OFF_REQUESTS = 67
CT_37 Night Mon
CT_42 Night Mon
TR_73 Any Mon
CT_31 Any Tue
CT_35 Late Tue
CT_45 Any Tue
CT_47 Early Tue
CT_50 Any Tue
CT_51 Any Tue
CT_52 Any Tue
CT_54 Any Tue
CT_57 Any Tue
HN_5 Late Tue
HN_6 Any Tue
NU_12 Late Tue
TR_61 Any Tue
CT_44 Any Wed
CT_53 Late Wed
CT_54 Early Wed
HN_3 Early Wed
NU_17 Any Wed
TR_75 Any Wed
TR_78 Late Wed
CT_26 Late Thu
CT_42 Night Thu
CT_44 Any Thu
CT_48 Any Thu
CT_50 Any Thu
CT_56 Any Thu
CT_57 Day Thu
NU_12 Day Thu
TR_65 Any Thu
TR_66 Any Thu
TR_68 Any Thu
TR_69 Day Thu
TR_72 Early Thu
TR_74 Early Thu
TR_75 Any Thu
CT_27 Any Fri
CT_30 Any Fri
CT_39 Night Fri
CT_41 Any Fri
CT_47 Any Fri
HN_4 Any Fri
HN_5 Day Fri
NU_19 Any Fri
TR_64 Day Fri
TR_64 Night Fri
TR_67 Any Fri
CT_21 Any Sat
CT_23 Any Sat
CT_30 Any Sat
CT_32 Any Sat
CT_42 Any Sat
CT_45 Any Sat
CT_48 Any Sat
HN_1 Any Sat
NU_15 Late Sat
TR_68 Any Sat
TR_76 Any Sat
CT_31 Day Sun
CT_59 Late Sun
HN_2 Late Sun
HN_7 Any Sun
HN_9 Any Sun
TR_66 Day Sun
TR_68 Any Sun
これに対して、次のようなGUIとPython記述になります。
0 件のコメント:
コメントを投稿