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