(58)【調査した分野】(Int.Cl.,DB名)
前記各工程の上限仕掛量を前記各工程の入力バッファの検索範囲として設定し、前記フローショップを実行することで前記各工程の生産性を算出し、前記生産性が最低の工程をネック工程として検出するネック工程検出部を更に備え、
前記目標生産性設定部は、前記ネック工程の生産性を前記目標生産性として設定する請求項1記載のシミュレーション装置。
【発明を実施するための形態】
【0023】
図1は、実施の形態に係るシミュレーション装置1の構成を示すブロック図である。シミュレーション装置1は、例えば、CPU等のプロセッサと、ROM及びRAM等の記憶装置とを備えるコンピュータで構成され、処理部10、入力部15、及び出力部16を備える。
【0024】
シミュレーション装置1は、複数のジョブから構成される1以上の入力ワークのそれぞれを複数の工程で順次に処理するフローショップをシミュレートする。
【0025】
図2は、実施の形態に係るフローショップの一例を示す図である。
図2に示すフローショップは、入力ワークを順次に処理する6つの設備K1〜K6で構成される。設備K1〜K6は、それぞれ、工程(1)〜(6)を実行する。入力ワークは、まず、工程(1)に入力され、工程(2)、・・・、工程(6)と順次に処理され、最終的な製品へと加工される。
【0026】
各工程のそれぞれには、上限仕掛量が事前に設定されている。ここで、「仕掛量」とは、入力ワークを構成する複数のジョブの処理順序を入れ替えることが可能なバッファサイズを指す。「上限仕掛量」とは、各工程(各設備)が所持できる最大の仕掛量を指す。
図2の例では、工程(1)〜工程(6)に対して、それぞれ、「30」、「25」、「40」、「25」、「20」、「25」の上限仕掛量が設定されている。
【0027】
「設備」とは、例えば、製品を処理する処理装置が該当し、ロットに応じて段取り替えが行われる。「ロット」とは、各工程で入力ワークを処理するにあたり、1つにまとめることができるジョブの単位を表す。「ジョブ」とは、例えば、各工程において処理対象となるワーク(例えば、素材)が該当し、本シミュレーションでは1の設備における1の処理単位を指す。「入力ワーク」は、例えば、処理対象となる複数のワーク群(例えば、素材群)が該当し、本シミュレーションでは複数のジョブから構成される。
【0028】
「段取り替え」とは、工程において、処理対象となる製品の品種や工程内容が変わる際生じる段取り作業のことを指し、本シミュレーションではロットまとめ条件が変わる度に段取り替えが発生する。
【0029】
各工程は、ロットまとめ条件を持ち、ロットまとめ条件にしたがって、入力ワークのジョブの処理順序が変更される。
図6の例では、工程(1)〜工程(6)は、それぞれ、「熱処理温度」、「板厚」、「表面処理」、「熱処理温度」、「板幅」、及び「塗料」のロットまとめ条件が規定されている。例えば、工程(1)は、「熱処理温度」に関する処理条件がロットまとめ条件であり、「熱処理温度」に関する処理条件が同じジョブが1つのロットにまとめられて入力ワークが処理される。本シミュレーションでは、各ジョブは、各工程におけるロットまとめ条件が事前に定められている。
【0030】
シミュレーション装置1は、1の工程の入力キュー(入力バッファの一例)に1の入力ワークを格納し、入力キューの先頭から所定番目までのジョブに対して1の工程の仕掛量を示す検索範囲を設定し、検索範囲内から所定の選択ルールで1のジョブを選択し、1の工程の出力キュー(出力バッファの一例)に格納する処理を最初の工程から最後の工程まで順次に繰り返すことで上記のフローショップを実現する。
【0031】
図3は、工程(1)でのフローショップの一例を示す図である。以下、
図3を用いて、工程(1)でのフローショップに関する処理について説明する。
【0032】
(処理1)入力ワークの作成
シミュレーション装置1は、記憶装置に事前に記憶された複数のジョブのデータを読み出し、ランダムに並べ替えて、入力ワークを作成し、工程(1)の入力キュー301に格納する。
図3の例では、1つの楕円が1つのジョブを示し、各ジョブは、「A」、「B」、「C」の3つのロットまとめ条件が事前に規定されている。なお、入力キュー301の先頭は工程(1)を実施する設備側であり、設備に近いジョブほど処理順序が高い。
【0033】
(処理2)ジョブの選択
シミュレーション装置1は、検索範囲Rを入力キュー301に設定する。ここでは、入力キュー301の先頭から後端側に向けて8個のジョブに検索範囲Rが設定されている。検索範囲Rは工程(1)の仕掛量に相当する。
【0034】
次に、シミュレーション装置1は、検索範囲Rの中から所定の選択ルールで1つのジョブを選択し、出力キュー106に格納する。選択ルールについては後述するが、基本的には、検索範囲R内において、直前に選択したジョブと工程(1)でのロットまとめ条件が同じジョブであって処理順序が最先のジョブを選択するというルールである。
【0035】
セクション(a)では、検索範囲Rの中からロットまとめ条件「A」の3つのジョブがジョブ「1」〜「3」として既に選択されて出力キュー106に格納されており、4番目のジョブ「4」が選択される様子が示されている。直前に選択したジョブ「3」は、ロットまとめ条件が「A」であり、検索範囲R内において、ロットまとめ条件が「A」であり、且つ、処理順序が最先のジョブは、先頭から7番目のジョブであるので、7番目のジョブがジョブ「4」として、出力キュー106に格納されている。
【0036】
セクション(b)では、検索範囲R内において、ロットまとめ条件「A」のジョブがないので、先頭のジョブ(ロットまとめ条件「C」)がジョブ「5」として選択され、出力キュー106に格納されている。
【0037】
(処理3)入力キューの更新
シミュレーション装置1は、入力キュー301から1つのジョブを選択すると、入力キュー301内の検索範囲Rからジョブが1つ減るので、入力キュー301に残存するジョブの順序を1つ繰り上げる。
【0038】
(処理4)ジョブの選択と入力キューの更新の繰り返し
シミュレーション装置1は、入力キュー301が空になるまで、(処理2)と、(処理3)とを繰り返す。
【0039】
セクション(g)では、入力キュー301から全てのジョブが選択され、入力キュー301が空になっている。
【0040】
これにより、最終的に、出力キュー106には左側の先頭から順番に、品種「A」の4つのジョブ、品種「C」の4つのジョブ、品種「B」の7つのジョブ、品種「A」の4つのジョブ、品種「C」の2つのジョブが配列された入力ワークが得られる。
【0041】
(処理5)次の工程の入力キューへの入力ワークの格納
シミュレーション装置1は、(処理4)が終了すると、出力キュー106に格納した入力ワークを工程(2)の入力キュー301に格納し、(処理2)〜(処理4)を繰り返す。以後、シミュレーション装置1は、最終の工程までの各工程に対して(処理2)〜(処理4)を繰り返す。
【0042】
図1に戻り、処理部10は、ネック工程検出部11、設定部12、必要仕掛量算出部13、及び必要仕掛量決定部14を備える。処理部10が備える各部は、例えば、CPUが記憶装置に記憶されたコンピュータをシミュレーション装置1として機能させるコンピュータ読取可能なプログラムを実行することで実現される。ここで、このプログラムは例えば、DVD−ROM等の記録媒体に記録されて市場に提供されてもよい。
【0043】
ネック工程検出部11は、各工程の上限仕掛量を各工程の入力キューの検索範囲として設定し、フローショップを実行することで各工程の生産性を算出し、生産性が最低の工程をネック工程として検出する。
【0044】
図3の例では、ネック工程検出部11は、検索範囲Rを各工程の上限仕掛量に設定した上で、最初の工程から最後の工程に向けて上記のフローショップを実行する。そして、ネック工程検出部11は、各工程の出力キュー106に格納された入力ワークから各工程の段取り替え回数を算出し、算出した段取り替え回数に基づいて、各工程の生産性を算出する。
【0045】
段取り替え回数は、出力キュー106に格納された入力ワークにおいて、ロットまとめ条件が切り替わる位置で段取り替えが発生するものとする。
図3のセクション(g)の例では、4番目及び5番目のジョブの間、8番目及び9番目のジョブの間、15番目及び16番目のジョブの間、19番目及び20番目のジョブの間でロットまとめ条件が切り替わっている。よって、ネック工程検出部11は、工程(1)の段取り替え回数を4回と算出する。
【0046】
ネック工程検出部11は、各工程の段取り替え回数から、例えば、下記の式(1)を用いて各工程の生産性を算出する。
【0047】
生産性[ton/月]=720[hr/月]×稼働率[%]×(1/100)×Σジョブの処理重量[ton]/(Σ処理時間[hr]+Σ段取り替え時間[hr])・・・(1)
ここで、「Σジョブの処理重量」は工程が処理するジョブの重量の総和を示す。「重量」はジョブの1個当たりの重量の平均値を示し、「ton/個」で表される。ここで、「重量」は、ジョブ毎に異なる値が設定されてもよい。なお、「重量」は事前に記憶装置に記憶されている。
【0048】
「Σ処理時間」はジョブの処理時間の総和を示す。「処理時間」は、1個のジョブを処理するために必要な時間の平均値を示し、「分/個」で表される。ここで、「処理時間」は、ジョブの種類と、ロットまとめ条件とのうちの少なくともいずれか1つの毎に異なる値が設定されてもよいし、一律に同じ値が設定されてもよい。なお、「処理時間」は、記憶装置に事前に記憶されている。
【0049】
「Σ段取り替え時間」はジョブの段取り替え時間の総和を示す。「段取り替え時間」は、段取り替え回数「1回」当たりに必要な時間の平均値を示し、「分/回」で表される。ここで、「段取り替え時間」は、ロットまとめ条件の切り替わりパターン毎に異なる値が設定されてもよいし、一律に同じ値が設定されてもよい。例えば、
図3のセクション(g)では、ロットまとめ条件が「A」→「C」、「C」→「B」、「B」→「A」というように切り替えられているので、これらの切り替えパターン毎に段取り替え時間は設定されてもよい。
【0050】
例えば、段取り替え時間を一律に同じ値に設定した場合、「Σ段取り替え時間」は、「段取り替え回数」に「段取り替え時間」を乗じた値になる。また、例えば、段取り替え時間をロットまとめ条件の切り替わりパターン毎に異なる値に設定した場合、「Σ段取り替え時間」は、切り替わりパターン毎の「段取り替え時間」の加算値となる。いずれにせよ、「Σ段取り替え時間」は、「段取り替え回数」が増大するにつれて増大するので、「生産性」は、「段取り替え回数」が増大するにつれて減少する。「段取り替え時間」は事前に記憶装置に記憶されている。
【0051】
「稼働率」は、設備の全操業時間のうち、処理時間と段取り替え時間とに設備が費やすことができる最大時間の比率を示し、「%」で表される。ここで、「稼働率」は工程毎に異なる値が採用されてもよいし、全工程において同じ値が設定されてもよい。
【0052】
なお、「720」は、1月を30日とした場合の1月の時間、すなわち、24時間×30日である。
【0053】
設定部12は、フローショップの目標生産性を設定する。ここで、設定部12は、ネック工程検出部11により検出されたネック工程の生産性を目標生産性として設定する。
【0054】
必要仕掛量算出部13は、最初の工程の入力キューに1以上の入力ワークを格納し、各工程の入力キューの検索範囲を更新しながらフローショップを実行して各工程の段取替回数を算出する。そして、必要仕掛量算出部13は、各工程の段取替回数に基づいて各工程の生産性を算出して各工程における仕掛量と生産性との関係性を示す関係性情報を生成する。そして、必要仕掛量算出部13は、各工程の関係性情報に基づいて、目標生産性を達成するための各工程の必要仕掛量を算出する。
【0055】
図3を参照し、必要仕掛量算出部13は、まず、1の入力ワークを生成して入力キュー301に格納する。次に、検索範囲Rを初期値(例えば、「1」)に設定し、入力キュー301の検索範囲R内からジョブを選択して出力キュー106に格納する処理を入力キューが空にまで繰り返す。次に、必要仕掛量算出部13は、出力キュー106に格納された入力ワークから段取り替え回数を求め、式(1)を用いて生産性を算出する。これにより、検索範囲Rと生産性との1の組、すなわち、仕掛量と生産性との1の組が得られる。
【0056】
次に、必要仕掛量算出部13は、検索範囲Rを所定幅(例えば、「1」)増大させ、同じ処理を繰り返し、仕掛量と生産性との1の組を得る。必要仕掛量算出部13は、この処理を検索範囲Rが所定の終了値になるまで繰り返し、仕掛量と生産性との組を複数得る。更に、必要仕掛量算出部13は、他の1以上の入力ワークに対しても、同様の処理を行い、仕掛量と生産性との組を複数得る。これにより、仕掛量と生産性との関係性を網羅的に示す関係性情報が得られる。例えば、検索範囲Rの数をM、入力ワークの数をNとするとM×N個の仕掛量と生産性との組が得られる。
【0057】
図7は、関係性情報の一例を示すグラフである。
図7において、縦軸は生産性、横軸は仕掛量を示す。
図7に示されるように、ジョブをランダムに組み合わせて入力ワークが作成されているため、仕掛量が同じであっても生産性にバラツキが生じているが、大局的には仕掛量が増大するにつれて生産性が向上していることが分かる。これは、仕掛量が大きいほど、入力キューから直前に選択したジョブとロットまとめ条件が同じジョブを選び易くなり、段取り替え回数を少なくすることができるからである。段取り替え回数が少なくなると、段取り替え時間が減少し、式(1)の分母の値が減少するので、生産性が増大する。
【0058】
必要仕掛量算出部13は、このようにして工程毎の関係性情報を作成する。そして、必要仕掛量算出部13は、各工程の関係性情報を用いて目標生産性を達成するために最低限必要な各工程の仕掛量である必要仕掛量を算出する。
図7の例では、αが目標生産性とされているので、必要仕掛量は10と算出される。
【0059】
図1に戻る。必要仕掛量決定部14は、各工程の必要仕掛量が各工程に事前に定められた上限仕掛量を超える超過工程の有無を検出し、超過工程がなくなるまで必要仕掛量算出部13に必要仕掛量を算出させる。
【0060】
ここで、必要仕掛量決定部14は、まず、全工程のジョブの選択ルールを自工程重視に設定して必要仕掛量算出部13にフローショップを実行させて各工程の必要仕掛量を算出させる。
【0061】
そして、必要仕掛量決定部14は、超過工程がある場合、超過工程の選択ルールが次工程重視でなければ、超過工程の直前の工程の選択ルールを次工程重視に設定し、残りの工程の選択ルールを自工程重視に設定して必要仕掛量算出部13にフローショップを実行させて各工程の必要仕掛量を算出させる。
【0062】
一方、必要仕掛量決定部14は、超過工程がある場合、超過工程の選択ルールが次工程重視であれば、超過工程の生産性を目標生産性として再設定し、必要仕掛量算出部13にフローショップを実行させ、再設定した目標生産性を達成するための各工程の必要仕掛量を算出させる。
【0063】
自工程重視の選択ルールは、直前に選択したジョブに対して自工程でのロットまとめ条件が同じジョブを優先的に選択するというルールである。
【0064】
具体的には、自工程重視の選択ルールは以下の(1)〜(4)の優先順位でジョブを選択するルールである。
【0065】
(1)直前に選択したジョブと自工程及び次工程でのロットまとめ条件が同じジョブを選択する。
【0066】
(2)直前に選択したジョブと自工程でのロットまとめ条件が同じジョブを選択する。
【0067】
(3)直前に選択したジョブと次工程でのロットまとめ条件が同じジョブを選択する。
【0068】
(4)入力キューの先頭のジョブを選択する。
【0069】
次工程重視の選択ルールは、直前に選択したジョブに対して次工程でのロットまとめ条件が同じジョブを優先的に選択するというルールである。
【0070】
具体的には、次工程重視の選択ルールは、上記の(1)〜(4)の優先順位のうち(2)、(3)を入れ替えたルールである。具体的には下記の通りである。
【0071】
(1)直前に選択したジョブと自工程及び次工程でのロットまとめ条件が同じジョブを選択する。
【0072】
(2)直前に選択したジョブと次工程でのロットまとめ条件が同じジョブを選択する。
【0073】
(3)直前に選択したジョブと自工程でのロットまとめ条件が同じジョブを選択する。
【0074】
(4)入力キューの先頭のジョブを選択する。
【0075】
入力部15は、例えば、キーボードやマウス等の入力装置で構成され、オペレータから、シミュレーションに必要な条件等を入力する操作を受け付ける。出力部16は、例えば、ディスプレイで構成され、シミュレーション結果等の画像を表示する。
【0076】
[フローチャート]
図4は、実施の形態に係るシミュレーション装置1の処理の一例を示すフローチャートである。以下の説明では、工程(1)〜工程(K)のK個の工程があるものとする。Kは2以上の整数である。
【0077】
まず、ネック工程検出部11は、ネック工程を検出する。ここで、ネック工程検出部11は、各工程の検索範囲を各工程に対して事前に定められた上限仕掛量で固定したうえで、フローショップを実行することで、各工程の生産性を算出し、生産性が最低の工程をネック工程(N)として検出する。S201の処理の詳細は
図5を用いて後述する。ここで、設定部12は、ネック工程(N)の生産性を目標生産性αとして設定する。なお、N=1,2,・・・,Kの整数である。
【0078】
次に、必要仕掛量決定部14は、全工程のジョブの選択ルールを自工程重視に設定する(S202)。
【0079】
次に、必要仕掛量算出部13は、フローショップを実行し、目標生産性αを達成するための各工程の必要仕掛量を工程(1)から順番に算出する(S203)。S203の処理の詳細は
図6を用いて後述する。
【0080】
次に、必要仕掛量決定部14は、必要仕掛量が上限仕掛量より大きな工程(N’)の有無を検出する(S204)。なお、N’=1,2,・・・,Kの整数である。工程(N’)が検出されれば(S204でYES)、処理がS205に進められ、工程(N’)が検出されなければ(S204でNO)、処理は終了される。工程(N’)は超過工程に該当する。
【0081】
次に、必要仕掛量決定部14は、工程(N’)の選択ルールが次工程重視であるか否かを判定する(S205)。工程(N’)の選択ルールが次工程重視でなければ(S205でNO)、工程(N’)の直前の工程(N’−1)の選択ルールを次工程重視、残りの工程の選択ルールを自工程重視に設定し(S207)、処理をS203に戻す。
【0082】
この場合、必要仕掛量算出部13は、目標生産性αを下げることなく、S203においてフローショップを実行し、各工程の必要仕掛量を算出することになる。
【0083】
一方、必要仕掛量決定部14は、工程(N’)の選択ルールが次工程重視であれば(S205でYES)、工程(N’)をネック工程として再定義し、工程(N’)の関係性情報から工程(N’)の上限仕掛量を達成するための最大の生産性βを決定し、決定した生産性βを目標生産性αとして設定し(S206)、処理をS203に戻す。
【0084】
この場合、目標生産性αが下げられて、S203に示す処理が実行されるので、超過工程が発生する可能性を低下させることができる。
【0085】
例えば、工程(N’)に対する関係性情報として、
図8に示す関係性情報が得られたとすると、工程(N’)の上限仕掛量(=25)を達成するための最大の生産性(=220)が生産性βとして算出される。なお、生産性βは、α>βとなる。これは、
図8に示すように、ネック工程の上限仕掛量(=25)は、目標生産性αに対応する仕掛量(=35)よりも小さいからである。
【0086】
S203〜S207の処理を繰り返すことで、工程(N’)が検出されなくなるまで、必要仕掛量の算出が繰り返される。
【0087】
なお、S205において、工程(N’)=工程(1)であれば、工程(N’−1)が存在しないので、全工程が自工程重視に設定される。また、S201,S203の処理を踏まえると、1回目のS205では、N’=1になることはない。
【0088】
また、工程(N)及び工程(N’)以降の工程の選択ルールは必ず「自工程重視」であり、目標生産性αに対して必要仕掛量<上限仕掛量となる。これは、工程(N)、工程(N’)以降の工程は目標生産性αを達成するための生産能力を有しているからである。
【0089】
図5は、S201のサブルーチンを示すフローチャートである。S301では、ネック工程検出部11は、記憶装置からシミュレーション対象となる複数のジョブのデータを読み出し、読み出したジョブをランダムに並べ替えて、入力ワークを作成する。
【0090】
S302では、ネック工程検出部11は、工程(1)〜工程(K)のうち、1の工程(k)を指定するための変数kに1を代入して変数kを初期化する。
【0091】
S303では、ネック工程検出部11は、工程(k)の入力キューに、S301で作成した入力ワークを格納する。
【0092】
S304では、ネック工程検出部11は、工程(k)の検索範囲を、工程(k)の上限仕掛量に固定する。
【0093】
次に、ネック工程検出部11は、検索範囲の中から1のジョブを選択し(S305)、選択した1のジョブを出力キューに格納する。ここでは、ネック工程検出部11は、自工程重視の選択ルールでジョブを選択すればよい。
【0094】
次に、ネック工程検出部11は、入力キュー内に残存するジョブの順序を1つ繰り上げ、入力キューを更新する(S306)。
【0095】
次に、ネック工程検出部11は、入力キューが空になったか否かを判定し(S307)、空になった場合(S307でYES)、処理をS308に進める。
【0096】
一方、入力キューが空になっていない場合(S307でNO)、ネック工程検出部11は、処理をS305に戻し、次の1のジョブを選択する。以上の処理が繰り返され、入力ワークはロットまとめ条件に従った処理順序で並べ替えられ、工程(k)の出力キューに格納される。
【0097】
S308では、ネック工程検出部11は、工程(k)の出力キューに格納された入力ワークに対する段取り替え回数を計算する。
【0098】
S309では、ネック工程検出部11は、式(1)を用いて、工程(k)の生産性を計算する。ここでは、式(1)を用いて生産性が計算されたが、これは一例である。例えば、式(1)に代えて、入力ワークを構成する全ジョブの合計処理時間と、段取り時間との和が生産性として算出されてもよい。
【0099】
S310では、ネック工程検出部11は、変数kがKに到達したか否かを判定し、変数kがKに到達していなければ(S310でNO)、変数kを1インクリメントして(S311)、処理をS303に戻す。これにより、工程(k)の出力キューに格納された入力ワークが、工程(k+1)の入力キューに格納され、S303〜S309の処理が繰り返される。
【0100】
一方、変数kがKに到達していれば(S310でYES)、ネック工程検出部11は、入力ワークの作成数が上限に到達したか否かを判定する(S312)。入力ワークの作成数が上限に到達していなければ(S312でNO)、処理がS301に戻され、別の入力ワークが作成され、この入力ワークに対してS301〜S312の処理が実行される。
【0101】
一方、入力ワークの作成数が上限に到達していれば(S312でYES)、処理がS313に進められる。以上、S301〜S312の処理が繰り返されることで、工程(1)〜工程(K)の検索範囲をそれぞれ上限仕掛量に設定したときの、工程(1)〜工程(K)のそれぞれについての生産性が算出される。
【0102】
S313では、ネック工程検出部11は、工程(1)〜工程(K)の中から生産性が最低の工程をネック工程として検出する。
【0103】
S314では、ネック工程検出部11はネック工程の工程番号をNと設定し、設定部12はネック工程の生産性を目標生産性αと設定する。S314の処理が終了すると、処理は
図4のS202に進められる。
【0104】
図6は、S203のサブルーチンを示すフローチャートである。まず、必要仕掛量算出部13、工程(1)において、工程(1)のロットまとめ条件を用いたフローショップを実施し、工程(1)での関係性情報を得る(S401)。詳細には、必要仕掛量算出部13は、工程(1)について、検索範囲を変えながら複数の入力ワークにつてのフローショップを実行することで、生産性と仕掛量との組を複数算出し、工程(1)についての関係性情報を得る。これにより、工程(1)に関して、
図7や
図8に示すような関係性情報が得られる。
【0105】
次に、必要仕掛量算出部13は、工程(1)〜工程(K)のうち、1の工程(k)を指定するための変数kに1を代入して変数kを初期化する(S402)。
【0106】
次に、必要仕掛量算出部13は、工程(k)の関係性情報から目標生産性αを達成するための必要仕掛量を工程(k)の検索範囲R(k)として決定する(S403)。例えば、工程(1)に対する関係性情報として、
図7に示すものが得られたとすると、目標生産性α(=225)を達成するための必要仕掛量(=10)が検索範囲R(1)として決定される。
【0107】
次に、必要仕掛量算出部13は、工程(k)の検索範囲を検索範囲R(k)に固定する(S404)。
【0108】
次に、必要仕掛量算出部13は、ジョブをランダムに並び替えて入力ワークを作成し、、工程(1)の入力キューに格納する(S405)。
【0109】
次に、必要仕掛量算出部13は、工程(1)から工程(k)のうち、処理対象の工程(m)を指定する変数mに1を代入し、変数mを初期化する(S406)。ここで、mは、m=1〜kの整数である。
【0110】
次に、必要仕掛量算出部13は、工程(m)の入力キューから工程(m)での選択ルールにしたがって1つずつジョブを選択して出力キューに格納し、工程(m)の処理順序を生成する(S407)。この場合、必要仕掛量算出部13は、固定された検索範囲R(m)のもとで、工程(m)のロットまとめ条件を用いて工程(m)の入力キューから1つずつジョブを選択して出力キューに格納していき、工程(m)の処理順序を生成する。
【0111】
この場合、必要仕掛量算出部13は、工程(m)の選択ルールが自工程重視に設定されていれば、自工程重視でジョブを選択し、工程(m)の選択ルールが次工程重視に設定されていれば、次工程重視の選択ルールでジョブを選択する。
【0112】
次に、必要仕掛量算出部13は、生成した工程(m)の処理順序を工程(m+1)の入力キューに格納する(S408)。
【0113】
次に、必要仕掛量算出部13は、変数mがkに到達していなければ(S409でNO)、変数mを1インクリメントし(S410)、処理をS407に戻す。一方、必要仕掛量算出部13は、変数mがkに到達していれば(S409でYES)、処理をS411に進める。これにより、検索範囲が決定済みの工程(1)〜工程(k)において、検索範囲R(1)〜R(k)が固定さた状態で、工程(1)に入力された入力ワークが、各工程で順次に処理されて工程(k)から取り出される。
【0114】
次に、必要仕掛量算出部13は、S401と同様、検索範囲R(k+1)を更新しながら、工程(k+1)のフローショップを実行する(S411)。これにより、工程(k+1)において、仕掛量と生産性との複数の組からなる関係性情報が得られる。
【0115】
次に、必要仕掛量算出部13は、入力ワークの作成数が上限に到達していなければ(S412でNO)、処理をS405に戻し、処理対象のジョブをランダムに並べ替え、新たな入力ワークを作成し、工程(1)の入力キューに格納する。
【0116】
一方、入力ワークの作成数が上限に到達していれば(S412でYES)、必要仕掛量算出部13は、工程(k+1)が最終工程、つまり、工程(k+1)が工程(K)であるか否かを判定する(S413)。
【0117】
工程(k+1)が最終工程でなければ(S413でNO)、必要仕掛量算出部13は、変数kを1インクリメントし(S414)、処理をS403に戻す。一方、工程(k+1)が最終工程であれば(S413でYES)、処理はS415に進む。
【0118】
S415では、必要仕掛量算出部13は、工程(k+1)、すなわち、工程(K)の関係性情報から、目標生産性αを達成するための工程(K)の必要仕掛量を決定する。
【0119】
S416では、必要仕掛量算出部13は、S403、S415の処理を通じて決定された工程(1)〜工程(K)の必要仕掛量を出力するする。
【0120】
以上の処理により、工程(1)〜工程(K)関係性情報が順に計算されながら、目標生産性αを達成するための必要仕掛量が工程(1)〜工程(K)の順に決定される。S416の処理が終了すると、処理が
図4のS204に進められる。
【0121】
[具体例]
次に、シミュレーションの具体例について説明する。以下の具体例では、上述した
図2に示すように、6つの工程(1)〜工程(6)からなるフローショップを想定する。
【0122】
図2において、ロットまとめ条件、上限仕掛量の数値を明記しているが、その他、シミュレーションに必要な事項(例えば、処理時間、段取り替え時間、各ジョブのロットまとめ条件など)も事前に入力され、記憶装置に記憶されているものとする。以下の「S」で始まるステップ番号は
図4のステップ番号である。
【0123】
S201(1回目):ネック工程検出部11は、ネック工程(N)を特定する。今回、N=5、目標生産性α=225という結果になったとする。
【0124】
S202(1回目):必要仕掛量決定部14は、全工程の選択ルールを「自工程重視」にする。
【0125】
S203(1回目):必要仕掛量算出部13は、各工程において、目標生産性αを達成するための必要仕掛量を求める。
【0126】
一例として、工程(1)に対する必要仕掛量を求める場合のS203の概要を以下に示す。
【0127】
m1:必要仕掛量算出部13は、ジョブをランダムに並び替えることで入力ワークを複数個作成する。この具体例では、入力ワークは20個作成されている。
【0128】
m2:必要仕掛量算出部13は、20個の入力ワークのそれぞれについて、検索範囲(仕掛量)を変えながら、工程(1)のフローショップを実行し、工程(1)の関係性情報を得る。ここでは、
図7に示す関係性情報が得られたとする。図中の各点は、「20個の入力ワークのそれぞれについての仕掛量と生産性との組」を示している。
【0129】
m3:必要仕掛量算出部13は、
図7に示す関係性情報を用いて、目標生産性α=225を達成するための必要仕掛量「10」を算出する。ここで、工程(1)の上限仕掛量は、「30」なので、工程(1)は生産性に余裕があることが分かる。
【0130】
以後、m1〜m3の処理が工程(2)から工程(6)まで順次に繰り返され、各工程において目標生産性αを達成のための必要仕掛量が算出される。なお、工程(2)以降のm3はの処理は以下のようになる。工程(2)を例に挙げて説明すると、必要仕掛量算出部13は、検索範囲R(1)を「10」に固定し、m1で作成した20個の入力ワークのそれぞれを工程(1)に入力し、工程(1)及び工程(2)のフローショップを実行し、工程(2)の処理順序を20個得る。そして、必要仕掛量算出部13は、得られた20個の処理順序から工程(2)の関係性情報を得る。
【0131】
S204(1回目):必要仕掛量決定部14は、S203で求めた各工程の必要仕掛量が、上限仕掛量を超えているか否かを判定する。ここで、全工程の必要仕掛量が上限仕掛量以下であれば、必要仕掛量決定部14は、各工程の必要仕掛量を出力して処理を終了するが、この具体例では工程(3)で必要仕掛量>置場サイズになったとする。
【0132】
S205(1回目):必要仕掛量決定部14は、工程(3)の選択ルールを確認する。ここでは工程(3)の選択ルールは「自工程重視」なので、処理はS207に進む。
【0133】
S207(1回目):必要仕掛量決定部14は、工程(3)の生産性を上げるために、工程(2)の選択ルールを「次工程重視」にする。
【0134】
S203(2回目):必要仕掛量算出部13は、各工程において、目標生産性αを達成するための必要仕掛量を求める。ここでは、工程(2)の選択ルールが次工程重視に変更されている。
【0135】
S204(2回目):1回目のS204と同じである。この具体例では、工程(2)において、必要仕掛量>上限仕掛量になったとする。なお、選択ルールの変更により、工程(2)の生産性が下げられたため、工程(2)において、必要仕掛量>上限仕掛量になることは有り得る。
【0136】
S205(2回目):必要仕掛量決定部14は、工程(2)の選択ルールを確認する。工程(2)の選択ルールは「次工程重視」なので、処理はS206に進む。
【0137】
S206(2回目):必要仕掛量決定部14は、工程(2)における上限仕掛量を達成するための最大の生産性βを求める。工程(2)における関係性情報が
図8のようになったとする。目標生産性αでの必要仕掛量は「35」であるが、この必要仕掛量は工程(2)の上限仕掛量「25」を超えているため、目標生産性αを達成できないことが分かる。
【0138】
そこで、必要仕掛量決定部14は、工程(2)ををネック工程(N’)と再定義し、ネック工程(N’)の生産性βを求める。
図8の例では、工程(2)の上限仕掛量は「25」であるため、生産性βはβ=220であることが分かる。必要仕掛量決定部14は、目標生産性αから生産性βに再設定する。
【0139】
S203(3回目):必要仕掛量算出部13は、再設定された目標生産性αに対して上述した処理を実行し、各工程の必要仕掛量を再計算する。
【0140】
このように、シミュレーション装置1は、まず、全工程のジョブの選択ルールを自工程重視に設定してフローショップを実行し(S202)、各工程の必要仕掛量を算出するので、ネック工程の直前の工程を次工程重視、残りの工程を自工程重視に設定する特許文献1の手法に比べ、処理の簡素化を図ることができる。
【0141】
また、シミュレーション装置1は、超過工程(工程(N’))がある場合、超過工程の選択ルールが次工程重視でなければ、超過工程の直前の工程の選択ルールのみ次工程重視に設定し、残りの工程の選択ルールを自工程重視に設定してフローショップを実行する(S207)。そのため、目標生産性を下げることなく、目標生産性を達成するための各工程の必要仕掛量を算出できる。これにより、本態様は、特許文献1の手法に比べて最終的に得られる目標生産性の向上を図ることができる。
【0142】
一方、シミュレーション装置1は、超過工程の選択ルールが次工程重視であれば、超過工程の生産性を目標生産性として再設定し(S206)、フローショップを実行するので、目標生産性が下げられ、上限仕掛量より小さな必要仕掛量が算出される可能性を高くすることができる。
【0143】
(変形例1)
上記実施の形態では、設定部12は、ネック工程検出部11により検出されたネック工程の生産性を目標生産性として設定したが、本発明はこれに限定されず、入力部15を用いてオペレータにより入力された値を目標生産性として設定してもよい。この場合、
図1においてネック工程検出部11は不要となる。また、
図4のフローチャートにおいて、S201の処理は不要となる。
【0144】
(変形例2)
なお、
図4のS204では、必要仕掛量が上限仕掛量となる工程(N’)が1つ検出されるとして説明したが、複数の工程(N’)が検出されることもある。この場合、必要仕掛量決定部14は、例えば、上限仕掛量が最小の工程(N’)に対してS205の処理を適用すればよい。
【0145】
或いは、必要仕掛量決定部14は、複数の工程(N’)のそれぞれに対してS205の処理を適用してもよい。この場合、必要仕掛量決定部14は、複数の工程(N’)のうち、少なくとも1つの工程(N’)の選択ルールが次工程重視であれば、S205でYESと判定すればよい。そして、S206では、選択ルールが次工程重視の工程(N’)のうち上限仕掛量が最小の工程(N’)をネック工程として再定義すればよい。また、全ての工程(N’)が自工程重視であれば、必要仕掛量決定部14は、S205でNOと判定すればよい。この場合、必要仕掛量決定部14は、複数の工程(N’)のそれぞれについて直前の工程(N’−1)の選択ルールを次工程重視に設定すればよい。更に、複数の工程(N’)が連続する場合は、連続する工程(N’)のうち最も上流側の工程(N’)の直前の工程(N’−1)が次工程重視とされ、残りの工程が自工程重視とされてもよいし、最も上流側の工程(N’)の直前の工程から最も下流側の工程(N’)の直前の工程までが次工程重視とされてもよい。