2020年4月11日土曜日

祝日日勤分だけ代休

①祝日の勤務で日勤であれば回数分代休をふる ②祝日夜勤であれば代休なし という制約のリクエストがありました。既に何回か同種の記述は、このブログでも紹介していますが、改めてチュートリアル11に追加する方法をビデオにしました。

Pythonコードは以下です。
import sc3
def 代休処理():
    for person in 全スタッフ:
        祝日日勤list=[]
        代休list=[]
        for day in 今月:
            if day in 休日:
                v=sc3.GetShiftVar(person,day,'代休')#休診日は代休禁止
                sc3.AddHard(~v,'休日代休禁止')#ハード制約
            else:
                v=sc3.GetShiftVar(person,day,'代休')#休診日以外の代休
                代休list.append(v)#数をカウント
            if day in 祝日:
                v=sc3.GetShiftVar(person,day,'日勤')#祝日日勤
                祝日日勤list.append(v)#数をカウント
        s='祝日日勤数と代休数は等しい'
        sc3.AddHard(sc3.SeqComp(祝日日勤list,代休list),s)#ハード制約
代休処理()

この代休を日勤扱いとするには、新たに日勤集合として次のように定義します。
この日勤集合というシフトについて、今までの「日勤」で制約した制約を「日勤集合」というシフトに
置き換えれば、代休も含めた日勤集合について制約が作用することになります。

0 件のコメント:

コメントを投稿