勤務希望表シフトプログラム


出力結果は
こちら

<目的関数> 差を最小にする
MIN Z13+Z21+Z22+Z31+Z32+Z91+Z92+Z101+Z102+Z103+Z112+Z131+Z132+Z142+Z143



<制約式>
ST

禁止パターン制約
  14日の時間帯1では要員がちょうど満たされているためiは出勤となり、この勤務シフトは制約には加えられない。
 しかし今回の実験でこの制約を除くと“中抜け勤務シフト”なってしまったため あえて制約に加える。

i141-i142+i143<=1
i141=1



上限・下限人数の制約
  各勤務シフトに入力されている上限・下限人数内にパートナーを収めるための制約。
T13-Z13<=2
T13+Z13>=2

T21-Z21<=3
T21+Z21>=3
T22-Z22<=3
T22+Z22>=3

T31-Z31<=4
T31+Z31>=4
T32-Z32<=4
T32+Z32>=4

T91-Z91<=3
T91+Z91>=3
T92-Z92<=3
T92+Z92>=3

T101-Z101<=4
T101+Z101>=4
T102-Z102<=4
T102+Z102>=4
T103-Z103<=2
T103+Z103>=2

T112-Z112<=4
T112+Z112>=4

T131-Z131<=4
T131+Z131>=3
T132-Z132<=4
T132+Z132>=3

T142-Z142<=4
T142+Z142>=4
T143-Z143<=2
T143+Z143>=2


縦計算制約
  各勤務シフトのパートナー人数を求める制約。
e13+h13+i13-T13=0
a21+b21+c21+j21-T21=0
a22+b22+c22+j22-T22=0
a31+b31+c31+d31+j31-T31=0
a32+b32+c32+d32+j32-T32=0
a91+b91+c91+j91-T91=0
a92+b92+c92+j92-T92=0
a101+b101+c101+d101+j101-T101=0
a102+b102+c102+d102+j102-T102=0
e103+f103+g103+h103-T103=0
a112+c112+d112+i112+j112-T112=0
a131+b131+d131+i131+j131-T131=0
a132+b132+d132+i132+j132-T132=0
a142+c142+d142+i142+j142-T142=0
e143+h143+i143-T143=0



担当別制約
  庶務の仕事は電話交換以外に出納室・採用教育・POSの3担当に分けられている。そのため上限・下限人員以外に担当人員確保を以下の制約でおこなう。
e13+g13+i13>=1              ex. →1日の3シフトではe・g・iが一人以上必ず出勤(出納)。
a21+b21>=1                   →2日の1シフトではa・bが一人以上必ず出勤(出納)。
b21+c21>=1                   →2日の1シフトではb・cが一人以上必ず出勤(採教)。
a21+b21+c21>=2                →2日の1シフトではa・b・cが二人以上必ず出勤。
i21+j21>=1                     →2日の1シフトではi・jが一人以上必ず出勤(POS)。

a22+b22>=1
b22+c22>=1
a22+b22+c22>=2
i22+j22>=1

a31+b31>=1
b31+c31>=1
a31+b31+c31>=2
i31+j31>=1

a32+b32>=1
b32+c32>=1
a32+b32+c32>=2
i32+j32>=1

a91+b91>=1
b91+c91>=1
a91+b91+c91>=2
i91+j91>=1

a92+b92>=1
b92+c92>=1
a92+b92+c92>=2
i92+j92>=1

a101+b101>=1
b101+c101>=1
a101+b101+c101>=2
i101+j101>=1

a102+b102>=1
b102+c102>=1
a102+b102+c102>=2
i102+j102>=1

e103+f103+g103>=1

a112+b112>=1
b112+c112>=1
a112+b112+c112>=2
i112+j112>=1

a131+b131>=1
b131+c131>=1
a131+b131+c131>=2
i131+j131>=1

a132+b132>=1
b132+c132>=1
a132+b132+c132>=2
i132+j132>=1

a142+b142>=1
b142+c142>=1
a142+b142+c142>=2
i142+j142>=1

e143+i143>=1


end

各変数をそれぞれ 0/1で表示させる命令
INTEGER a21                       
INTEGER a22
INTEGER a31
INTEGER a32
INTEGER a91
INTEGER a92
INTEGER a101
INTEGER a102
INTEGER a112
INTEGER a131
INTEGER a132
INTEGER a142

INTEGER b21
INTEGER b22
INTEGER b31
INTEGER b32
INTEGER b91
INTEGER b92
INTEGER b101
INTEGER b102
INTEGER b131
INTEGER b132

INTEGER c21
INTEGER c22
INTEGER c31
INTEGER c32
INTEGER c91
INTEGER c92
INTEGER c101
INTEGER c102
INTEGER c112
INTEGER c142

INTEGER d31
INTEGER d32
INTEGER d101
INTEGER d102
INTEGER d112
INTEGER d131
INTEGER d132
INTEGER d142

INTEGER e13
INTEGER e103
INTEGER e143

INTEGER f103

INTEGER g103

INTEGER h13
INTEGER h103
INTEGER h143

INTEGER i13
INTEGER i112
INTEGER i131
INTEGER i132
INTEGER i142
INTEGER i143

INTEGER j21
INTEGER j22
INTEGER j31
INTEGER j32
INTEGER j91
INTEGER j92
INTEGER j101
INTEGER j102
INTEGER j112
INTEGER j131
INTEGER j132
INTEGER j142