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であるときカウント対象となり、トータルのシステムコストが 最小となるように、最適システム系は作用します。

最初設定すると、求解左ペインのソフトレベルのチェックボックスが空欄なので、チェックして求解します。