上は、下のソースによる解です。月曜日に公休を割り当てる制約になっています。「全スタッフ」と「月」は、「ソース全体」の中で定義されています。


import sc3

for person in 全スタッフ:
    for day in 月:
        v=sc3.GetShiftVar(person,day,'公休')
        s=staffdef[person]+' '+ daydef[day]+ ' 公休設定しました。'
        print(s)
        sc3.AddHard(v,s)

全スタッフ

GUIでは、「グループ定義」で定義されています。




GUIでは、「定義済み曜日」の中で定義されています。




sc3.GetShiftVar(person,day,‘シフト名’)

■スケジュールナースの各シフトは、OneHot エンコーディングされています。
各人、各日にシフト数だけのバイナリ変数があります。
つまり、1になるシフトは、各人、各日あたり1個以上、1個以下です。
■ユーザは、任意のシフト変数を上の書式で、取り出すことが出来ます。
ここで、person/dayは、ゼロベースインデックス変数
シフトは、インデックス変数または、ストリングです。
■sc3は、py thonに組み込んであるスケジュールナースのライブラリ名です。スケジュールナースの独自命令は、全てsc3 .xx となります。
■import sc3が呼び出す前に記述されている必要があります。

sc3.AddHard(v,string)

ハード制約を追加する関数です。
vは、GetShiftVarで取得したシフトVariable、またはsc3サポート制約関数または、And/Or/Not/SeqExpr/SeqCompの出力変数になります。 vは、各スタッフ月曜日の公休という変数になります。AddHardは、これが成立(true)になるように動作します。

stringは、解がないときの解析で使用します。(矛盾する原因の列挙で使用します。)