<現象>
コンペティションの週毎のシフトオフフォーマットの中で、例えば、次のような記述がある場合があり、
その場合、正しく問題を解釈することが出来ません。
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 件のコメント:
コメントを投稿