Python チュートリアル5 をソフト制約化したものです。
import sc3
import itertools
for person in 全スタッフ:
vlist=[]
s='言語公休回数'+' '+staffdef[person]+'\n'
for day in 月:
v=sc3.GetShiftVar(person,day,'公休')
vlist.append(v)
sc3.AddSoft(~vlist[0] | ~vlist[1] | ~vlist[2] | ~vlist[3] | ~vlist[4],s,4)#soft_level 4
for v in itertools.combinations(vlist,2):
sc3.AddSoft(v[0] | v[1],s,4)#soft level 4
sc3.AddSoft(variable ,string ,soft_level)
がソフト制約の書式です。Soft_levelは、定数である必要があります。
AddSoftは、variableがTrueであることを期待します。Trueであるときは、カウント対象とはなりません。Falseであるときカウント対象となり、トータルのシステムコストが
最小となるように、最適システム系は作用します。
最初設定すると、求解左ペインのソフトレベルのチェックボックスが空欄なので、チェックして求解します。