2019年12月12日木曜日

外来看護師が1人休みのときに病棟看護師は外来勤務

という制約の実装をどうするかという問題です。

外来看護師というグループがあり外来専門で外来を行っています。このグループ内で休みがあったとき、休み人数分病棟看護師から持ってくるという制約になります。

つまり外来看護師数がNのとき、
 Σ日勤@外来看護師+Σ外来@外来担当の病棟看護師==N
という制約にすればよいことになります。
外来看護師数が増減してもPythonで書けば、動的に処理が可能でメンテナンスフリー
に出来ます。

def 外来支援Day(day):#外来看護師が1人休みのときに病棟から1人外来として支援する
    
    nnurses_out=len(外来看護師)
    vlist=[]
    for person in 外来看護師:
        v=sc3.GetShiftVar(person,day,'日勤')
        vlist.append(v)
    for person in 外来担当:
        v=sc3.GetShiftVar(person,day,'外来')
        vlist.append(v)
    s='外来看護師が1人休みのときに病棟から1人外来として支援する '+daydef[day]
    sc3.AddSoft(sc3.SeqError(nnurses_out,nnurses_out,3,vlist),s,5)
    
    for person in 全スタッフ:#外来担当外の外来禁止
        if person not in 外来担当:
            s='外来禁止'+staffdef[person]+' '+daydef[day]
            v=sc3.GetShiftVar(person,day,'外来')
            sc3.AddHard(~v,s)#
    
def 外来支援():
    for day in 全日:
        if day in 祝ではない月火水金今月:
            外来支援Day(day)
        else:
            for person in 全スタッフ:
                v=sc3.GetShiftVar(person,day,'外来')
                s='外来禁止'+staffdef[person]+' '+daydef[day]
                sc3.AddHard(~v,s)#外来担当外
 

0 件のコメント:

コメントを投稿