「《スケジューリング問題》」の版間の差分

提供: ORWiki
ナビゲーションに移動 検索に移動
27行目: 27行目:
 
 最適化 (ここでは最小化) すべき目的関数の代表例として, 全ジョブの終了時間を表す最大完了時間 (メークスパン (makespan) と言うことがある), ジョブがシステムに滞留した時間の総和を表す滞留時間和, 納期からの遅れの指標となる最大納期遅れや遅れ和が挙げられる.  
 
 最適化 (ここでは最小化) すべき目的関数の代表例として, 全ジョブの終了時間を表す最大完了時間 (メークスパン (makespan) と言うことがある), ジョブがシステムに滞留した時間の総和を表す滞留時間和, 納期からの遅れの指標となる最大納期遅れや遅れ和が挙げられる.  
  
 以上に述べてきたように, ジョブショップ問題は, ショップ (工程) の構成, ジョブ処理環境及び目的関数によって分類されるので, これらを (待ち行列におけるケンドール (Kendall) 風の) [[3つ組み記法 (スケジューリング問題の)|3つ組み記法]] ($<math>\alpha |\beta |\gamma</math>$) によって記述することができる [2]. すなわち, $<math>\alpha</math>$は工程, $<math>\beta</math>$はジョブ処理環境, $<math>\gamma</math>$は目的関数である.  
+
 以上に述べてきたように, ジョブショップ問題は, ショップ (工程) の構成, ジョブ処理環境及び目的関数によって分類されるので, これらを (待ち行列におけるケンドール (Kendall) 風の) [[3つ組み記法 (スケジューリング問題の)|3つ組み記法]] (<math>\alpha |\beta |\gamma\, </math>) によって記述することができる [2]. すなわち, <math>\alpha\, </math>は工程, <math>\beta\, </math>はジョブ処理環境, <math>\gamma\, </math>は目的関数である.  
  
 表1は$<math>\alpha |\beta |\gamma</math>$による問題表規の例である.  
+
 表1は<math>\alpha |\beta |\gamma\, </math>による問題表規の例である.  
  
  
37行目: 37行目:
 
<tr>
 
<tr>
 
<td align="center" valign="top">
 
<td align="center" valign="top">
<table width="200" border="1" cellspacing="2" cellpadding="0">
+
<table width="300" border="1" cellspacing="2" cellpadding="0">
 
<tr>
 
<tr>
 
<td align="center">項目</td>
 
<td align="center">項目</td>
44行目: 44行目:
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td rowspan="7" align="center" valign="top">&lt;math&gt;\alpha&lt;/math&gt;</td>
+
<td rowspan="7" align="center" valign="top"><math>\alpha\, </math></td>
<td align="center">&lt;math&gt;1&lt;/math&gt;</td>
+
<td align="center"><math>1\, </math></td>
<td>1機械</td>
+
<td align="left">1機械</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;P&lt;/math&gt;</td>
+
<td align="center"><math>P\, </math></td>
<td>同一並列機械</td>
+
<td align="left">同一並列機械</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center"><math>Q</math></td>
+
<td align="center"><math>Q\, </math></td>
<td>一様並列機械</td>
+
<td align="left">一様並列機械</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;R&lt;/math&gt;</td>
+
<td align="center"><math>R\, </math></td>
<td>無関連並列機械</td>
+
<td align="left">無関連並列機械</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;F&lt;/math&gt;</td>
+
<td align="center"><math>F\, </math></td>
<td>フローショップ</td>
+
<td align="left">フローショップ</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;O&lt;/math&gt;</td>
+
<td align="center"><math>O\, </math></td>
<td>オープンショップ</td>
+
<td align="left">オープンショップ</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;J&lt;/math&gt;</td>
+
<td align="center"><math>J\, </math></td>
<td>ジョブショップ</td>
+
<td align="left">ジョブショップ</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
 
</td>
 
</td>
 
<td align="center" valign="top">
 
<td align="center" valign="top">
<table width="200" border="1" cellspacing="2" cellpadding="0">
+
<table width="300" border="1" cellspacing="2" cellpadding="0">
 
<tr>
 
<tr>
 
<td align="center">項目</td>
 
<td align="center">項目</td>
82行目: 82行目:
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td rowspan="2" align="center" valign="top">&lt;math&gt;\beta&lt;/math&gt;</td>
+
<td rowspan="2" align="center" valign="top"><math>\beta\, </math></td>
<td align="center">&lt;math&gt;prec&lt;/math&gt;</td>
+
<td align="center"><math>prec\, </math></td>
<td>先行制約</td>
+
<td align="left">先行制約</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;r_j&lt;/math&gt;</td>
+
<td align="center"><math>r_j\, </math></td>
<td>準備時間制約</td>
+
<td align="left">準備時間制約</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td rowspan="4" valign="top">&lt;math&gt;\gamma&lt;/math&gt;</td>
+
<td rowspan="4" valign="top"><math>\gamma\, </math></td>
<td align="center">&lt;math&gt;C_{max}&lt;/math&gt;</td>
+
<td align="center"><math>C_{max}\, </math></td>
<td>最大完了時間</td>
+
<td align="left">最大完了時間</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;\Sigma c_j&lt;/math&gt;</td>
+
<td align="center"><math>\Sigma c_j\, </math></td>
<td>滞留時間和</td>
+
<td align="left">滞留時間和</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;T_{max}&lt;/math&gt;</td>
+
<td align="center"><math>T_{max}\, </math></td>
<td>最大納期遅れ</td>
+
<td align="left">最大納期遅れ</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td align="center">&lt;math&gt;\Sigma T_j&lt;/math&gt;</td>
+
<td align="center"><math>\Sigma T_j\, </math></td>
<td>納期遅れ和</td>
+
<td align="left">納期遅れ和</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
117行目: 117行目:
 
 ジョブショップ問題の理論的研究の起源は1954年のジョンソン (S.H.Johnson) の定理 [7] にまで遡る.  
 
 ジョブショップ問題の理論的研究の起源は1954年のジョンソン (S.H.Johnson) の定理 [7] にまで遡る.  
  
 '''ジョンソンの定理''': 2機械フローショップにおいて$<math>A_j</math>$, $<math>B_j</math>$をそれぞれ第1機械及び第2機械におけるジョブ$<math>j(=1,2,\cdots,n)</math>$の処理時間とする. このとき, 最大完了時間最小化問題(<math>F$2 || C_{max}$</math>)の最適順序はつぎの[[順序付け規則]]で与えられる. すなわち,  
+
 '''ジョンソンの定理''': 2機械フローショップにおいて<math>A_j\, </math>, <math>B_j\, </math>をそれぞれ第1機械及び第2機械におけるジョブ<math>j(=1,2,\cdots,n)\, </math>の処理時間とする. このとき, 最大完了時間最小化問題(<math>F2 || C_{max}\, </math>)の最適順序はつぎの[[順序付け規則]]で与えられる. すなわち,  
  
:<math>\max (A_j,B_{j+1}) < \max (A_{j+1},B_j)</math>
 
  
 ならば, ジョブ$<math>j</math>$をジョブ($<math>j+1</math>$)より先に処理する. 等号の場合は, どちらが先でもよい.
+
:<math>\max (A_j,B_{j+1}) < \max (A_{j+1},B_j)\, </math>
  
 これ以後この様な最適な順序づけ規則の研究が進められたが, 1970年代初期のNP完全理論の誕生と共に, 多くのスケジューリング問題が[[NP困難]]になることが証明された [2]. 例えば, <math>$1 || \Sigma c_j</math>$, $<math>1 || T_{max}</math>$, <math>P$ || \Sigma c_j$, J$2 || c_{max}</math>$ (J2は2機械ジョブショップを表す)などは最適順序づけ規則が存在するが, $<math>1 | r_j | T_{max}</math>$, $<math>1 | prec | \Sigma c_j</math>$, $<math>p1 || c_{max}$, F$2 || \Sigma c_j</math>$はNP困難となる.  
+
 
 +
 ならば, ジョブ<math>j\, </math>をジョブ(<math>j+1\, </math>)より先に処理する. 等号の場合は, どちらが先でもよい.
 +
 
 +
 これ以後この様な最適な順序づけ規則の研究が進められたが, 1970年代初期のNP完全理論の誕生と共に, 多くのスケジューリング問題が[[NP困難]]になることが証明された [2]. 例えば, <math>1 || \Sigma c_j\, </math>, <math>1 || T_{max}\, \, </math>, <math>P || \Sigma c_j, J2 || c_{max}\, </math> (J2は2機械ジョブショップを表す)などは最適順序づけ規則が存在するが, <math>1 | r_j | T_{max}\, </math>, <math>1 | prec | \Sigma c_j\, </math>, <math>p1 || c_{max}, F2 || \Sigma c_j\, </math>はNP困難となる.  
  
 
 しかし, NP困難問題だからといって, 必ずしも手に負えないという訳ではない. 工夫された[[分枝限定法]]などを用いることによって (希な最悪例を除いて) かなり大きな問題例まで解くことが可能である (例えば, [9] 参照).  
 
 しかし, NP困難問題だからといって, 必ずしも手に負えないという訳ではない. 工夫された[[分枝限定法]]などを用いることによって (希な最悪例を除いて) かなり大きな問題例まで解くことが可能である (例えば, [9] 参照).  

2007年7月6日 (金) 20:36時点における版

【すけじゅーりんぐもんだい (scheduling problem) 】

 スケジューリング問題は, 多くの仕事あるいは活動 (スケジューリング用語ではジョブ (job) という) を種々の制約のもとで実行しなければならないとき, 実行可能なスケジュールや, 最適なスケジュールを見出す問題である. 従って, 効率的な運用が求められるあらゆる組織においてスケジューリング問題が存在するが, ここでは基本問題の1つであるジョブショップ問題 (jobshop problem) を中心に説明する.

 多数のジョブが1台以上の機械の一部または全部によって予め指定された順序 (以下では工程順序という) に従って順次処理される. ただし, どのジョブも一時に高々1機械でしか処理されないし, どの機械も一時に高々1ジョブしか処理できない. また, 特に断りのない限り, 作業 (各機械におけるジョブの処理) は, いったん開始されると, 終了まで中断されることはない. このようなシステムはジョブショップと言われ, 所与の評価基準(目的関数)を最適にするよう, 各機械でのジョブ処理順序を見出す, すなわち, 順序づけの問題はジョブショップ問題と言われる.

 ジョブショップ問題は生産スケジューリングの典型的なモデルであるが [8], コンピュータシステムのスケジューリングモデルとしてもしばしば取り上げられる [3]. また, 機械をボトルネックとなっている資源の代名詞と考えれば, ジョブショップ問題の適用範囲は極めて広い.

 ジョブショップ問題の仮定を一部変えることによって種々のモデルが考えられる. 代表的な例として, 1機械問題 (one-machine problem), 並列機械問題 (parallel-machine problem), フローショップ問題 (flow shop problem), オープンショップ問題 (open shop problem) などがある.

 1機械問題では, 全てのジョブがちょうど1台の機械で処理される場合に, ジョブの処理順序を決定する問題である.

 並列機械問題は, 2台以上の機械が存在し, 各ジョブはそれらのうちのいずれか1台で一度だけ処理されるとき, 各ジョブに対する機械の割当てと, 各機械に割当てられたジョブの処理順序を決定する問題である. 特に, 全機械が同一の場合を同一並列機械問題 (identical parallel-machine problem), 機械によって処理速度が異なる場合を一様並列機械問題 (uniform parallel-machine problem), ジョブと機械の組合せによって, 処理時間が異なる場合を無関連並列機械問題 (unrelated parallel-machine problem) と言う.

 ジョブショップ問題において, 工程順序がどのジョブについても同じ場合を特にフローショップ問題という. また, ジョブの一部または全ての工程順序が任意であって, これも最適化の対象となる場合をオープンショップ問題という.

 以上のジョブショップモデルでは, 機械間のジョブ搬送や仕掛け用バッファの有限性, ジョブ間の段取時間などが考慮されていず, 必ずしも現実を反映していない. その意味ではしばしば古典的モデル [4] と言われる. これをさらに拡張したモデルとしてFMSスケジューリング (flexible manufacturing system scheduling) [10], ロボティックセルスケジューリング (robotic cell scheduling) [5], 資源制約付きスケジューリング (scheduling under resource constraints) [1], グループスケジューリング (group scheduling) [6] などがしばしば検討されている.

 FMSは, 1台で多種加工が可能なマシニングセンタやAGV (automated guided vehicle), ロボット, AS/RS(automated storage/retrieval system)などの自動物流機器で構成されている. 特に, 1台のロボットと少数のマシニングセンタからなる小規模のFMSはロボティックセル (またはFMC) と言われる. これらのシステムでは加工スケジューリングのみならず, 搬送などの物流のスケジューリングがシステム全体の効率化に大きな影響を及ぼす.

 ジョブショップにおいて機械以外にボトルネックとなる資源(工作機械の治工具, 計算機のメモリなど) が存在し, それらのスケジューリングも考慮されなければならない場合は資源制約付きスケジューリング問題と言われる.

 ジョブ間に段取時間が存在するとき, GT (group technology) に基づいて, 段取時間が比較的小さいジョブをグループにまとめ, グループ間で行う順序づけをグループスケジューリングと言う.

 ジョブショップ問題 (及びその拡張問題) では, ジョブまたは作業に種々の制約が課せられることが多い. 典型的な制約条件として処理順序に関するジョブ間の先行制約, 最早開始時刻または準備時間の制約などがある.

 最適化 (ここでは最小化) すべき目的関数の代表例として, 全ジョブの終了時間を表す最大完了時間 (メークスパン (makespan) と言うことがある), ジョブがシステムに滞留した時間の総和を表す滞留時間和, 納期からの遅れの指標となる最大納期遅れや遅れ和が挙げられる.

 以上に述べてきたように, ジョブショップ問題は, ショップ (工程) の構成, ジョブ処理環境及び目的関数によって分類されるので, これらを (待ち行列におけるケンドール (Kendall) 風の) 3つ組み記法 () によって記述することができる [2]. すなわち, は工程, はジョブ処理環境, は目的関数である.

 表1はによる問題表規の例である.


表 1: 3つ組み記法によるジョブショップ問題の分類

項目 表示 意味
1機械
同一並列機械
一様並列機械
無関連並列機械
フローショップ
オープンショップ
ジョブショップ
項目 表示 意味
先行制約
準備時間制約
最大完了時間
滞留時間和
最大納期遅れ
納期遅れ和


 ジョブショップ問題の理論的研究の起源は1954年のジョンソン (S.H.Johnson) の定理 [7] にまで遡る.

 ジョンソンの定理: 2機械フローショップにおいて, をそれぞれ第1機械及び第2機械におけるジョブの処理時間とする. このとき, 最大完了時間最小化問題()の最適順序はつぎの順序付け規則で与えられる. すなわち,



 ならば, ジョブをジョブ()より先に処理する. 等号の場合は, どちらが先でもよい.

 これ以後この様な最適な順序づけ規則の研究が進められたが, 1970年代初期のNP完全理論の誕生と共に, 多くのスケジューリング問題がNP困難になることが証明された [2]. 例えば, , , (J2は2機械ジョブショップを表す)などは最適順序づけ規則が存在するが, , , はNP困難となる.

 しかし, NP困難問題だからといって, 必ずしも手に負えないという訳ではない. 工夫された分枝限定法などを用いることによって (希な最悪例を除いて) かなり大きな問題例まで解くことが可能である (例えば, [9] 参照).



参考文献

[1] J. Blazewicz, W. Cellary, K. Slowinski, J. Weglarz, Scheduling under Resource Constraints : Deterministic Model, J. C. Balzer, Basel, 1986.

[2] P. Brucker, Scheduling Algorithms, Springer, 1995.

[3] E. G. Coffman, eds., Computer and Job-shop Scheduling Theory, John Wiley and Sons, 1976.

[4] R. W. Conway, W. L. Maxwell, L. W. Miller, Theory of Scheduling, Addison-Weseley Reading, 1967. 関根智明監訳, 『スケジューリングの理論』, 日刊工業新聞社, 1971.

[5] N. G. Hell, H. Kamoun, C. Shriskandarajah, "Scheduling in Robotic Cells : Classification, Two and Three Machine Cells," Operations Research, 45 (1997), 421-439.

[6] 人見勝人, 中島勝, 吉田照彦, 小島敏彦,『GTによる生産管理システム』, 日刊工業新聞社, 1981.

[7] S. H. Johnson, "Optimal Two and Three Stage Production Schedules with Setup Times Included," Naual Research Logistics Quartry, 1 (1954), 61-68.

[8] 木瀬洋,「生産スケジューリングの現状と動向」,『システム/制御/情報』, 41 (1997), 92-99.

[9] 木瀬洋,「分枝限定法で大規模問題を解く」,『オペレーションズ・リサーチ』, 39 (1994), 601--606.

[10] N. Raman, K. Stecke and E. Rachamadugu, "Forcused Review of FMS Scheduling Research," 『計測と制御』, 33 (1994), 680-689.

[11] 田中克己, 石井信明,『スケジューリングとシミュレーション』, 計測自動制御学会 (1995).