夜勤務シフトプログラム
(勤務可能時間表)

 

<目的関数> 差を最小にする
MIN Z1Y+Z2Y+Z3Y+Z4Y+Z5Y+Z6Y+Z7Y


<制約式>
ST


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

T2y-Z2y<=2
T2y+Z2y>=2

T3y-Z3y<=2
T3y+Z3y>=2

T4y-Z4y<=2
T4y+Z4y>=2

T5y-Z5y<=2
T5y+Z5y>=2

T6y-Z6y<=2
T6y+Z6y>=2

T7y-Z7y<=2
T7y+Z7y>=2


縦計算制約
  
各勤務シフトのパートナー人数を求める制約。
e1y+h1y+i1y-T1y=0
g2y+h2y-T2y=0
e3y+g3y-T3y=0
h4y+i4y-T4y=0
i5y-T5y=0
g6y+i6y+h6y-T6y=0
e7y+h7y+i7y-T7y=0


勤務可能シフトの制約
  各パートナーから集めた勤務可能時間表から可能勤務シフトの公休希望日数を制約式にしたもの。
e2y+e4y+e5y+e6y=0

g1y+g4y+g5y+g7y=0

h3y+h5y=0

i2y+i3y=0


担当別制約
  庶務の仕事は電話交換以外に出納室・採用教育・POSの3担当に分けられている。そのため上限・下限人員以外に担当人員確保を以下の制約でおこなう。
e1y+i1y>=1

g6y+i6y>=1

e7y+i7y>=1


end


各変数をそれぞれ 0/1で表示させる命令
INTEGER a1x                    
INTEGER e3y
INTEGER e7y

INTEGER g2y
INTEGER g3y
INTEGER g6y

INTEGER h1y
INTEGER h2y
INTEGER h4y
INTEGER h6y
INTEGER h7y

INTEGER i1y
INTEGER i4y
INTEGER i5y
INTEGER i6y
INTEGER i7y