180 likes | 279 Views
2009 年度 第 5 回輪講. ~簡単な DPM による実験編~ 平賀 友浩. 目次. 1.概要 2.モデル 3.アルゴリズム 4.計算 5.まとめ. 概要. 単期間での解体問題を取り扱う 簡単な部品を考えて、適当な制約条件を付けて Heuristic なアルゴリズムを動かしてみる. モデル. 前回同様、 a 、 b 、 c 、 d の4つの部品からなるモデルを考える。 B を取り外すためには、 a と c を分離する必要がある。. DPM. 各種制約および条件設定. 新品部品の取得コスト;
E N D
2009年度第5回輪講 ~簡単なDPMによる実験編~ 平賀 友浩
目次 • 1.概要 • 2.モデル • 3.アルゴリズム • 4.計算 • 5.まとめ
概要 • 単期間での解体問題を取り扱う • 簡単な部品を考えて、適当な制約条件を付けてHeuristicなアルゴリズムを動かしてみる
モデル • 前回同様、a、b、c、dの4つの部品からなるモデルを考える。 • Bを取り外すためには、aとcを分離する必要がある。
各種制約および条件設定 • 新品部品の取得コスト; • a/b/c a/b c/d a b c d • 80 50 35 20 40 30 10 • 需要 • a/b/c a/b c/d a b c d • 2 6 1 4 3 7 4
解体するための原料調達費 • 30 • 各プランのOperationにかかる時間 • プラン 1 2 3 4 5 6 7 • 時間 1 3 4 3 6 7 7 • 納涼区制約;25時間 • 解体費用 • Operationにかかる時間×5
アルゴリズム • Step 1. DPMを作成。Aijと、コストのパラメータを設定。Set t = 0 and k = 0,kは時刻tでの反復回数(今回の場合はtは固定) • Step 2. t = t + 1とし、If t ≤ TならStep 3へ、でなければStep 14へ(今回の場合T=1) • Step 3. 需要Djtを初期化、在庫Yjt. For all j, もしDjt ≥ Yj(t-1), then set Djt = Djt - Yj(t-1)、Yjt = 0,でなければ, Yjt = Yj(t-1) - Djt and Djt = 0. (今回の場合在庫はなし)
Step 4. 時刻tにおける初期解をすべての需要を新規取得によって充足したものとして設定。TRCの初期値を計算. • Step 5. kをk = k + 1とし、 Fiをもとにプランiを策定. • Step 6. 最大のFiからi*をi*k = max {F1, F2,…, Fi} のように決定。 Ai*j = 1 かつ Djt > 0 で、プランiで最小の需要を満たすようにzを決定Zi*kt = min {D1t, D2t, …, Djt}, • Step 7. MTktを使用容量としMTkt = MT(k-1)t + DTi∙Z i*kt, と更新する • Step 8. もし MTkt ≤ MCt,つまり使用した容量がキャパシティの範囲内なら Step 9へ,そうでなければStep 11へ
Step 9. TRCt、Djt, Yjtを更新。 • TRCt = TRCt - ∑COj∙Zi*kt+(CD∙DTi+CP)∙Zi*kt. • Ai*j = 1に対して、もし Djt > 0なら, Djt = Djt - Ai*j∙ Z i*kt, でなければ, Yjt = Yjt + Ai*j∙Z i*kt. • Step 10. もし、すべての需要が0ならば(∑Djt = 0), 残っている容量を RCt = MCt - MTktとし、 TRCt = TRCt + ∑Yjt∙Hjt,としてStep 2へ、そうでなければStep 5へ • Step 11. Zi*kt = Zi*kt – 1とデクリメントし、もし Zi*kt > 0ならStep 7へ,そうでなければ Fi* = 0とする • Step 12. もし∑Fi > 0ならstep 6へ,そうでなければStep 13へ
Step 13.(今回の場合は単期間なのでないが) • t = 1 からt – 1まで RCt ≥ min{DTi} かつ ∑Fi > 0を検索し、あれば Djt* = Djt, MCt* = RCt*, かつ t = t*, ただし t*はtの最近傍としてStep 5へ。なければ RCt = MCt – MTktかつ MINCOSTt = MINCOSTt + ∑Yjt∙HjtとしてStep 2へ。
一回目では上のようなFiとなったので、パーツa/b/cの需要の2まで、プラン1を選択。このとき使用した用量は2一回目では上のようなFiとなったので、パーツa/b/cの需要の2まで、プラン1を選択。このとき使用した用量は2 • 次に、a/b/cの需要が0となったので、それを考慮してBfiを再計算し、Fiを出すと、
したがって、プラン3をdの残りの需要2まで採択。このとき使用した容量は8したがって、プラン3をdの残りの需要2まで採択。このとき使用した容量は8 • Dの需要がなくなったので、Bfiを再計算し、Fiを出すと
したがって、プラン4をc/dの需要1まで採択。これによって使用された用量は3したがって、プラン4をc/dの需要1まで採択。これによって使用された用量は3 • これによりc/dの需要がなくなったので、再計算すると、
したがって、プラン2をcの需要と容量制約を考えて4まで採択。これによって使用された用量は12したがって、プラン2をcの需要と容量制約を考えて4まで採択。これによって使用された用量は12 • これで、容量が限界となったので、残りの需要を購入により埋め合わせ、TRCを計算すると、555となった。
まとめ • 実際に手で計算してみて、このアルゴリズムがどのように動いているのか、実感できた。 • バックワードのアルゴリズムは、複数の期間になった場合に、あるtで要領不足の場合に、それ以前で要領の空きがある場合に、そこで解体し、それを在庫しておくために必要であると考えた。それにより、在庫費用との比較によって、どちらが最適か判断するためのものであると考えた。