割り当て問題(assignment problem) 2019/8/2 割り当て問題(assignment problem) n種類の資源(資材、人、設備など)を、 これと同数のn種類の用途(需要、仕事など)に一つずつ割り当て、 全体としての計画を最適化(最大化・最少化)する問題。 有効さ行列 ・・・ n×nの行列 ©ATSUTO NISHIO
解法の基本 ハンガリー法 有効さ行列において、損失などを最少にする問題の固有の解法。 有効さ行列において、損失などを最少にする問題の固有の解法。 行列の各行、または各列に関して、任意の定数を引いても、各行、各列の値の関係は変わらず、適当な割り当て方も変わらない。 ©ATSUTO NISHIO
最小化問題の手順 ① 各行の最小値を各行のそれぞれの数値から引く。 ② 各列の最小値を各列のそれぞれの数値から引く。 → 各行、各列に少なくとも1個の0が存在する。 ③ 出来る限り少ない本数の直線で全ての0を引く。 ④ 列(行)の数(n)=直線の本数ならば、最適割り当てを求める。 ⑤ 列(行)の数(n)≠直線の本数ならば、修正行列をつくる。 直線の引かれていない数値の中の最小値(α)とすると、 ・直線の引かれていない全ての値からαを引く。 ・直線が交差している数値にはαを加える。 ・その他の数値はそのまま。 ⑥ ③~⑤を、最適割り当てが見つかるまで繰り返す。 ©ATSUTO NISHIO
最大化問題の手順 最小化問題に直してから解く。 最大化問題 → 最小化問題 ① 有効さ行列の数値の中の最大値(β)を見つける。 ① 有効さ行列の数値の中の最大値(β)を見つける。 ② 有効さ行列の各数値をβから引く。 ③ 最小化問題を解く。 ©ATSUTO NISHIO
m×nの割り当て問題 ダミー(dummy)の行(あるいは列)を加えて、 n×nの有効さ行列にする。 ダミー行(あるいは列)に割り当てがあった場合は、その割り当ては無視する。 ©ATSUTO NISHIO
最小化問題の例 3人の作業員を3種類の仕事に就業させる。 3人の作業員を3種類の仕事に就業させる。 作業員の各仕事に対する作業時間は表の通りである。総作業時間を最少にするような割り当てを考えよ。 仕事 Ⅰ Ⅱ Ⅲ 作業員 A X11 X12 X13 B X21 X22 X23 C X31 X32 X33 ©ATSUTO NISHIO
最大化問題の例 3人の営業マンを3地域に営業に出す。 3人の営業マンを3地域に営業に出す。 各営業マンの各地域に対する過去の成果は表の通りである。3人の成果合計を最大にするような割り当てを考えよ。 地域 Ⅰ Ⅱ Ⅲ 営業マン A X11 X12 X13 B X21 X22 X23 C X31 X32 X33 ©ATSUTO NISHIO
LPの割り当て問題への適用 割り当て問題はLPで解くことも出来る。 3×3の最小化問題の場合 A : a11+a12+a13=1 A : a11+a12+a13=1 B : a21+a22+a23=1 C : a31+a32+a33=1 Ⅰ : a11+a21+a31=1 Ⅱ : a12+a22+a32=1 Ⅲ : a13+a23+a33=1 aij は 0 or 1 (割り当てがあれば1、割り当てがなければ0) a11X11+a12X12+a13X13+a21X21+a22X22+a23X23+a31X31+a32X32+a33X33=Z Zを最少にするような aij を求める。 ©ATSUTO NISHIO