ここまでのまとめ的な例題になります。
不等式制約で実装されています。なお、解を二つ求めようとしますが、唯一の解しか存在しないため、solution2.txtは、存在しない..メッセージが出ます。
import sc3
for day in 全日: #列制約
for シフト in 全シフト:
V=[]
for 人 in 全スタッフ:
V.append(sc3.GetShiftVar(人,day,シフト))
sc3.AddHard(sc3.SeqLE(1,1,V),'')
for 人 in 全スタッフ: #行制約
for シフト in 全シフト:
V=[]
for day in 全日:
V.append(sc3.GetShiftVar(人,day,シフト))
sc3.AddHard(sc3.SeqLE(1,1,V),'')
for 人 in スタッフブロックトップ: #ブロック制約
for シフト in 全シフト:
for day in ブロックトップ日集合:
V=[]
for i in range(3):
for j in range(3):
V.append(sc3.GetShiftVar(人+i,day+j,シフト))
sc3.AddHard(sc3.SeqLE(1,1,V),'')