SeqCompは、代休を実現するときに使います。sc3.AddHardと常に組みで使います。
import sc3
for person in 全スタッフ:
vlist=[]
s='言語公休回数'+' '+staffdef[person]+'\n'
土WORKCNT=[]
日WORKCNT=[]
代CNT=[]
半CNT=[]
for day in 今月:
v=sc3.GetShiftVar(person,day,'訪問')
vD=sc3.GetShiftVar(person,day,'代休')
vH=sc3.GetShiftVar(person,day,'半休')
if day in 土:
土WORKCNT.append(v)
sc3.AddHard(~vD,'土曜日は代休なし'+str(person))
sc3.AddHard(~vH,'土曜日は半休なし'+str(person))
elif day in 日:
日WORKCNT.append(v)
sc3.AddHard(~vD,'日曜日は代休なし'+str(person))
sc3.AddHard(~vH,'日曜日は半休なし'+str(person))
else:
代CNT.append(vD)
半CNT.append(vH)
vlist.append(v)
sc3.AddHard(sc3.SeqComp(半CNT,土WORKCNT),'seqComp+str(person)')
sc3.AddHard(sc3.SeqComp(代CNT,日WORKCNT),'seqComp+str(person)')
sc3.SeqComp(List1,List2)
List1の要素をX(i)、List2の要素をY(i)とするときΣX(i)==ΣY(i)のとき、Trueを返す関数です。AddHardと組み合わせるとΣX(i)==ΣY(i) となるように制約します。