資源制約スケジューリング問題 ―メタヒューリスティクスによるアプ ローチ 野々部宏司 法政大学デザイン工学部 背景 組合せ(最適化)問題: “離散的”な集合を扱う問題 計算の複雑さの理論: NP困難性 現実には,多くの場合において厳密解を求めることは困難 実用上の要請 解きたい問題(問題例)に対して,一定時間内に実務上許容可能な解が実際 に得られること 比較的良質の解で満足 近似解法,発見的手法 高性能アルゴリズム 問題構造を巧く利用 適用範囲限定 汎用近似アルゴリズム 性能と汎用性のトレードオフ 本研究の目指すところ 実用性の高いスケジューリング・エンジンの開発 適用可能性(汎用性): 拡張RCPSPモデル 高性能: メタヒューリスティクス RCPSPに 定式化 スケジュール 汎用モデル RCPSP RCPSP ソルバ スケジューリング最適化エンジン 理 論 ―――― 応 用 ―――― 実 用 Theory Application Practice モデル RCPSP (Resource Constrained Project Scheduling Problem) 資源 r ∈ R 機械,工具,マンパワー,… 各時間 Kr まで利用可能 作業(仕事,工程) i ∈ I 処理時間: di (中断不可) 必要資源量: ki,r 開始時刻(決定変数, 非負整数): si r ∈ Ri 先行制約 i → j for si + di sj 評価基準 最大完了時刻,フロー時間,最大納期遅れ,… ガントチャート ki,r 3 di 4 2 5 1 1 2 3 i 4 5 6 7 8 9 10 11 12 t ガントチャート 資源 r ki,r 6 i 5 3 Kr = 4 di 4 3 2 1 3 2 4 5 4 1 1 2 3 4 5 6 7 8 9 10 11 12 t 拡張RCPSP 資源供給量が時間の経過とともに変化 資源供給量: Kr Kr,t (t = 1, 2, …) 作業による資源消費量が処理の経過とともに変化 資源消費量: ki,r ki,r,t (t = 1, 2, …, di) 時間制約(一般化先行制約) Multiple 処理モード 作業の中断,並列処理 時間制約 sj – si dij dij 0 の場合 最小遅延時間,最早開始時刻 i dij 0 j si sj t 時間制約 sj – si dij dij 0 の場合 最大遅延時間,納期 i dji < 0 j si sj t 時間制約 sj – si dij 時間枠の設定なども可能 i dji < 0 dij 0 j sj j の i に対する時間枠 t 時間制約スケジューリング Activity-on-node project network 作業間の先行関係(時間制約)を表現 1 1 2 –3 4 0 0 1 6 0 0 0 –1 3 2 5 4 –4 0 8 2 3 –5 i 2 j si + dij sj 6 4 dij 10 dist(0, i): 最早開始時刻 8 i から j への最長路を dist(i, j) とすれば,si + dist(i, j) sj 実行可能スケジュールが存在することは,長さ正の閉路が存在しないこ とに対応 (全点間)最長路問題: O(n (m + n log n)) 時間 Multiple 処理モード 作業の処理方法(=処理時間,必要資源量) 処理モードとして,複数の選択肢を設定可能 例 性能の異なる機械 作業量(人×日)一定 特急処理 MRCPSP(Multi-mode RCPSP) 各作業をいつ,どの処理モードで行うかを決定 Multiple 処理モード 作業 i の処理モード集合 Mi 0-1 変数 xi,m を用いて作業 i の処理モードを表現 xi,m =1 ⇔ 作業 i を処理モード m で処理 m∈Mi xi,m = 1, for all i 処理モード割当て: x = (xi,m | i ∈ I, m ∈ Mi) 非再生資源制約 s ∈ Rnon スケジュール全体での利用可能量に制限 例: 原材料,予算,... hm,s xi,m Hs i m 処理モードのみに関する制約 作業の中断 作業は中断後, 再処理可能 作業 i (処理時間 d) を d個の小作業 iτ (1 τ d) に分解 d 作業 i 1 2 … 作業 i t … it d 作業の中断 作業は中断後, 再処理可能 作業 i (処理時間 d) を d個の小作業 iτ (1 τ d) に分解 小作業間で中断可能 iτ, iτ+1 間の最大中断時間 b(τ) を設定可能 1 2 … 作業 i 中断 t it t+1 it+1 b(t) dm 作業の中断 作業は中断後, 再処理可能 作業 i (処理時間 d) を d個の小作業 iτ (1 τ d) に分解 小作業間で中断可能 iτ, iτ+1 間の最大中断時間 b(τ) を設定可能 1 2 … 作業 i t it t+1 it+1 各作業の開始時刻ベクトル si = (sit | 1 t di) を決定 中断中も資源を消費可能 dm 例:勤務時間を考慮した生産スケジュー リング ジョブショップ型のスケジューリング問題 各製品は複数の工程を経て生産 工程は,手動処理(前半) + 自動処理(後半) 設備資源は工程全体を通して,作業員資源 は手動処理においてのみ必要 休憩時間,シフト間においては, 手動処理を中断,自動処理は続行 割り込み不可 手動処理 8 12 自動処理 18 24 6 時 例:勤務時間を考慮した生産スケジュー リング ジョブショップ型のスケジューリング問題 各製品は複数の工程を経て生産 工程は,手動処理(前半) + 自動処理(後半) 設備資源は工程全体を通して,作業員資源 は手動処理においてのみ必要 休憩時間,シフト間においては, 手動処理を中断,自動処理は続行 割り込み不可 手動 8 手動 12 手動 自動処理 18 24 割り込み禁止(中断中も設備資源を消費) 6 時 作業の並列処理 小作業を並列処理可能 資源集合 R を,消費のされ方によって Rsum, Rmax に 分割 作業 i 1 2 …t … i1 i2 it d p(t): 最大並列数 it 例: 配員計画を含む生産スケジューリン グ 大きな構造物が対象 作業: 溶接,研磨,塗装など 資源: 構造物の配置場所,工員 総仕事量のみが与えられ,詳細な計画なし 溶接 研磨 塗装 t 例: 配員計画を含む生産スケジューリン グ 大きな構造物が対象 作業: 溶接,研磨,塗装など 資源: 構造物の配置場所,工員 総仕事量のみが与えられ,詳細な計画なし 溶接 研磨 塗装 t 例: 配員計画を含む生産スケジューリン グ 大きな構造物が対象 作業: 溶接,研磨,塗装など 資源: 構造物の配置場所,工員 総仕事量のみが与えられ,詳細な計画なし 溶接 研磨 作業の並列処理 塗装 t 「工員」資源 ∈ Rsum: 各小作業が消費する資源量の合計が必要 「配置場所」資源 ∈ Rmax: 小作業が消費する資源量の中で最大のものが 必要 アルゴリズム 局所探索法 1. 適当な初期解 x を何らかの方法で生成 2. x に対して,局所的な変更を加えて得られる解の集合(近傍) N(x) の中 に x よりもよい解 x が存在すれば,x := x として (x から x に移動して)2. に戻る 存在しなければ終了 N(x) x x タブー探索法 局所探索法の拡張 改悪解への移動を許可 近傍内の最良解へ(改悪であっても)移動 過去の探索履歴を基に,近傍を制限 アルゴリズムの概略 基本的枠組みはタブー探索 解 (x, ℓ) 実行可能処理モード割当て x = (xi,m | i∈I, m∈Mi) 非再生可能資源制約をすべて満足 作業リスト (作業の順列) ℓ = (ℓ1, ℓ2,…, ℓ|I|): リストスケジューリングによって,解 (x, ℓ) からスケジュール (x, s) を 生成 s = (si | i ∈ I ) si = (siτ | 1 τ di,m) : 作業 i の開始時刻ベクトル リストスケジューリングにより得られるスケジュールで解を評価 リストスケジューリング 入力: 解 (x, ℓ) 出力: 実行可能スケジュール (x, s) or “failure” 各作業の開始時刻ベクトル si(各小作業の開始時刻)をリストの順に決 定 si : すべての制約を満たす最早開始時刻(最小ベクトル) フォワード・スケジューリング 実行可能な開始時刻ベクトルが存在しない場合は,バックトラック リストスケジューリング: バッ クトラック 入力: 解 (x, ℓ) 出力: 実行可能スケジュール (x, s) or “failure” i 4 j i ... j t 1 2 3 4 5 6 7 8 9 10 11 12 リストスケジューリング: バッ クトラック 入力: 解 (x, ℓ) 出力: 実行可能スケジュール (x, s) or “failure” i -4 j i ... j t 1 2 3 4 5 6 7 8 9 10 11 12 リストスケジューリング: バッ クトラック 入力: 解 (x, ℓ) 出力: 実行可能スケジュール (x, s) or “failure” バックトラック回数に制限 i -4 j i ... j t 1 2 3 4 5 6 7 8 9 10 11 12 解空間の縮小 Activity-on-node project network の利用 以下の条件を満たす解 (x, ℓ) のみ探索 1. dist(i, j) < , dist( j, i) = リスト ℓ において,i は j に先行 2. 同一強連結成分内の作業はリスト ℓ 中連続して出現 1 0 0 1 0 –1 –3 2 3 5 –5 4 6 4 –4 2 8 2 6 4 2 初期解 初期解 (x0, ℓ0) 初期処理モード割当て x0 実行可能性判定(すべての非再生可能資源制約を満たすことができるかどう かの判定)がNP困難 制約充足問題に対するメタヒューリスティクス(TabuCSP) 初期リスト ℓ0 ランダムもしくは発見的手法 近傍 近傍 N(x, ℓ) 解 (x, ℓ) に対し, 以下のいずれかひとつの操作を適用することで得られる解 の集合 1. ChangeMode(i, m) 2. ShiftForward(i, j) 近傍 近傍 N(x, ℓ) 解 (x, ℓ) に対し, 以下のいずれかひとつの操作を適用することで得られる解 の集合 1. ChangeMode(i, m) 作業 i の処理モードを m∈ Mi に変更 その結果,x が非再生可能資源制約に違反するようであれば, x を初期解と して TabuCSP を実行 TabuCSP は,ある定められた反復回数で打ち切り 2. ShiftForward(i, j) 近傍 近傍 N(x, ℓ) 解 (x, ℓ) に対し, 以下のいずれかひとつの操作を適用することで得られる解の集合 1. ChangeMode(i, m) 2. ShiftForward(i, j) 作業 i が作業 j に先行し,かつ以下の 2条件を満たすようリスト ℓ を修正 1. dist(i, j) < , dist( j, i) = リスト ℓ において,i は j に先行 2. 同一強連結成分内の作業はリスト ℓ 中連続して出現 近傍 近傍 N(x, ℓ) 解 (x, ℓ) に対し, 以下のいずれかひとつの操作を適用することで得られる解の集合 1. ChangeMode(i, m) 2. ShiftForward(i, j) クリティカルパスによる近傍の縮小 計算実験 ベンチマーク問題: MRCPSP Multi-mode RCPSP (資源制約, PSPLIB [Kolisch and Sprecher, 1997] j20: 554 個の問題例 |R| = |Rnon| = 2, | I | = 20, |Mi| = 3 アルゴリズム 先行制約) 計算時 間 #実行可能 最良値からの 平均誤差 Tabu search1 30 秒 95/270 284.07% Priority-rule method2 30 秒 270/270 180.05% Our tabu search3 10 秒 269/270 95.88% 1. [De Reyck and Herroelen, 1999] 333MHz PC 上で実行 2. [Heilmann, 2001] 333MHz PC上で実行 3. 1GHz PC上で実行 ベンチマーク問題: MRCPSP/max Multi-mode RCPSP with minimum and maximum time lags ProGen/max [Schwindt, 1998] 270 個の問題例: |R| = |Rnon| = 3, | I | = 100, |Mi| = 3, 4 or 5 アルゴリズム 計算時 間 #実行可能 最良値からの 平均誤差 Tabu search1 30 秒 95/270 284.07% Priority-rule method2 30 秒 270/270 180.05% Our tabu search3 10 秒 269/270 95.88% 1. [De Reyck and Herroelen, 1999] 333MHz PC 上で実行 2. [Heilmann, 2001] 333MHz PC上で実行 3. 1GHz PC上で実行
© Copyright 2024 ExpyDoc