2025年1月3日金曜日

INRC2プロジェクトファイルのバグ

<現象>

 コンペティションの週毎のシフトオフフォーマットの中で、例えば、次のような記述がある場合があり、

その場合、正しく問題を解釈することが出来ません。

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記述になります。

INRC2 8weeksの未解決問題を全て解いてからプロジェクトファイルはアップロードします。。

0 件のコメント:

コメントを投稿