(57)【特許請求の範囲】
【請求項１】
生産ラインの物流を予測する生産シミュレーション装置であって、
シミュレーションの入力情報である部品を生産ラインに投入する日時を特定する投入計画情報と、生産ラインにおける各工程の内容を特定する工程情報と、前記工程の順序を特定する工程経路情報の入力を受け付ける入力部と、
前記入力部において入力された情報を記憶する記憶部と、
前記工程情報及び前記工程経路情報を用いて、ブロック間でイベント計算処理結果が相互に影響を及ぼし合わないように生産ラインの工程を複数ブロックに分割する処理と、前記投入計画情報に基づいて生成される各ブロックのイベントの実行日時の順序から並列計算可能なイベント群を形成する処理と、当該イベント群を複数プロセッサに割り当てる処理と、各プロセッサに割り当てられたイベントの計算処理を実行する制御部と、
を備えることを特徴とする生産シミュレーション装置。
【請求項２】
前記工程情報は、当該工程における作業時間及び当該工程における利用リソースを特定する情報を含み、
前記入力部において、さらに、各工程に関係するリソースの容量を特定するリソース情報が入力され、前記記憶部が前記リソース情報を記憶し、前記制御部は、前記リソース情報を用いることで、リソース容量及び工程間のリソース共有の有無に基づいて、ブロック間でイベント計算処理結果が相互に影響を及ぼし合わないように生産ラインの工程を複数ブロックに分割することを特徴とする請求項１に記載の生産シミュレーション装置。
【請求項３】
前記制御部は、各ブロックのイベントの実行日時の順序において、最早の上流ブロックのイベントの実行日時と最早の下流ブロックのイベントの実行日時を比較し、上流ブロックのイベントの実行日時よりも下流ブロックのイベントの実行日時が早い場合は、当該上流ブロックのイベントと下流ブロックのイベントは並列計算可能としてイベント群を形成することを特徴とする請求項１に記載の生産シミュレーション装置。
【請求項４】
前記イベントの計算処理の結果に基づき発生したイベントの情報を取得し、前記計算処理を繰り返し行うことを特徴とする請求項１に記載のシミュレーション装置。
【請求項５】
前記記憶部には入力情報の異なる複数の情報を記憶可能であり、前記制御部は、入力情報の異なる複数のシナリオのシミュレーションを並列して実行処理を行うことを特徴とする請求項１に記載のシミュレーション装置。
【請求項６】
記憶部と入力部と制御部とを備えた生産シミュレーション装置において、生産ラインの物流を予測する生産シミュレーション方法であって、
部品を生産ラインに投入する日時を特定する投入計画情報と、生産ラインにおける各工程の内容を特定する工程情報と、前記工程の順序を特定する工程経路情報の入力を受け付けるステップと、
入力された情報を記憶するステップと、
前記工程情報及び前記工程経路情報を用いて、ブロック間でイベント計算処理結果が相互に影響を及ぼし合わないように生産ラインの工程を複数ブロックに分割するステップと、
前記投入計画情報に基づいて計算される各ブロックのイベントの実行日時の順序から並列計算可能なイベント群を形成するステップと、
当該イベント群を複数プロセッサに割り当てるステップと、
各プロセッサに割り当てられたイベントの計算処理を実行するステップと、
を備えることを特徴とする生産シミュレーション方法。
【請求項７】
前記工程情報は、当該工程における作業時間及び当該工程における利用リソースを特定する情報を含み、
各工程に関係するリソースの容量を特定するリソース情報の入力を受け付け、前記リソース情報を記憶するステップを有し、
前記生産ラインの工程を複数ブロックに分割するステップにおいて、前記リソース情報を用いることで、リソース容量及び工程間のリソース共有の有無に基づいて、ブロック間でイベント計算処理結果が相互に影響を及ぼし合わないように生産ラインの工程を複数ブロックに分割することを特徴とする請求項６に記載の生産シミュレーション方法。
【請求項８】
前記並列計算可能なイベント群を形成するステップにおいて、各ブロックのイベントの実行日時の順序において、最早の上流ブロックのイベントの実行日時と最早の下流ブロックのイベントの実行日時を比較し、上流ブロックのイベントの実行日時よりも下流ブロックのイベントの実行日時が早い場合は、当該上流ブロックのイベントと下流ブロックのイベントは並列計算可能としてイベント群を形成することを特徴とする請求項６に記載の生産シミュレーション方法。
【請求項９】
前記シミュレーション方法において、前記イベントの計算処理の結果に基づき発生したイベントの情報を取得し、前記計算処理を繰り返し行うことを特徴とする請求項６に記載のシミュレーション方法。
【請求項１０】
前記シミュレーション方法において、入力情報の異なる複数のシナリオのシミュレーションを並列して実行処理を行うことを特徴とする請求項６に記載のシミュレーション方法。
【請求項１１】
記憶部と入力部と制御部とを備えた生産シミュレーション装置において実行される生産ラインの物流を予測する生産シミュレーションプログラムであって、
部品を生産ラインに投入する日時を特定する投入計画情報と、生産ラインにおける各工程の内容を特定する工程情報と、前記工程の順序を特定する工程経路情報の入力を受け付ける処理と、
入力された情報を記憶する処理と、
前記工程情報及び前記工程経路情報を用いて、ブロック間でイベント計算処理結果が相互に影響を及ぼし合わないように生産ラインの工程を複数ブロックに分割する処理と、
前記投入計画情報に基づいて計算される各ブロックのイベントの実行日時の順序から並列計算可能なイベント群を形成する処理と、
当該イベント群を複数プロセッサに割り当てる処理と、
各プロセッサに割り当てられたイベントの計算処理を実行する処理と、
を前記生産シミュレーション装置に実行させることを特徴とする生産シミュレーションプログラム。
【請求項１２】
前記工程情報は、当該工程における作業時間及び当該工程における利用リソースを特定する情報を含み、
各工程に関係するリソースの容量を特定するリソース情報の入力を受け付け、前記リソース情報を記憶する処理を有し、
前記生産ラインの工程を複数ブロックに分割する処理において、前記リソース情報を用いることで、リソース容量及び工程間のリソース共有の有無に基づいて、ブロック間でイベント計算処理結果が相互に影響を及ぼし合わないように生産ラインの工程を複数ブロックに分割することを特徴とする請求項１１に記載の生産シミュレーションプログラム。
【請求項１３】
前記並列計算可能なイベント群を形成する処理において、各ブロックのイベントの実行日時の順序において、最早の上流ブロックのイベントの実行日時と最早の下流ブロックのイベントの実行日時を比較し、上流ブロックのイベントの実行日時よりも下流ブロックのイベントの実行日時が早い場合は、当該上流ブロックのイベントと下流ブロックのイベントは並列計算可能としてイベント群を形成することを特徴とする請求項１１に記載の生産シミュレーションプログラム。
【請求項１４】
前記シミュレーションプログラムにおいて、前記イベントの計算処理の結果に基づき発生したイベントの情報を取得し、前記計算処理を繰り返し行うことを特徴とする請求項１１に記載のシミュレーションプログラム。
【請求項１５】
前記シミュレーションプログラムにおいて、入力情報の異なる複数のシナリオのシミュレーションを並列して実行処理を行うことを特徴とする請求項１１に記載のシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生産ラインの物流を予測する生産シミュレーション技術に関する。
【背景技術】
【０００２】
高効率な生産計画立案や生産ライン設計を実現するためには、生産ラインの物流を予測する生産シミュレーションが有効である。生産シミュレーションの代表的な方法には、イベントドリブンシミュレーションがある。本方法では、生産工程間の部品の移動や、ある生産工程における作業の完了などの事象をイベントと定義し、例えば、「部品Aを工程１に移動する」イベントが完了した後には「部品Aの工程１作業が完了する」イベントが発生する、というように、イベントの連鎖的な発生をモデル化する。そして、計算機上で仮想的に時間を進めてイベント完了、発生をシミュレートすることで、将来の物流を予測する。ここで、各イベントは、当該イベントの実行日時の情報を有しており、本方法では、複数のイベントのリスト（イベントリスト）の中で、実行日時が最早のイベントの計算処理を順次実行することで仮想的に時間を進める。イベントリスト中の他のイベントは、最早実行日時イベントの計算処理が完了するまで処理待ちの状態となる。そのため、本方法ではイベントリスト中のイベントを１つずつ順番に処理する必要があり、対象の生産ラインが大規模な場合は、計算時間が大きいという問題がある。
【０００３】
上記の問題を解決する方法として、複数プロセッサによる複数イベント並列計算により計算時間を短縮する方法がある。例えば、特許文献1のように、イベントリスト中の最早実行日時イベントと、実行日時が最早実行日時から設定期間内に収まっているイベントを併せてイベント群を形成し、当該イベント群の計算処理を複数プロセッサに割り振る方法がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平6-325121号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献1のような並列計算方法は、イベント実行日時が設定期間内に収まるイベントは並列計算可能と判定している。しかし、設定期間が大きい場合、本来並列計算すべきでないイベントを並列計算してしまい、正しいシミュレーション結果が得られない場合がある。例えば、イベントリスト中にイベントAとイベントBがあり両者の実行日時が設定期間内に収まっているとする。ここで、イベントAの計算処理により発生するイベントCの実行日時がイベントA、イベントC、イベントBの順となる場合、イベントA、Bを並列計算する場合としない場合で、イベントB、Cの処理結果が異なる場合がある。一方、設定期間が小さい場合は、正しいシミュレーション結果が得られない可能性は低くなるが、設定期間内に収まるイベントの数が小さくなるため、並列計算可能なイベント数が小さくなり、複数プロセッサを効率的に活用できず、計算時間短縮効果が低下するという課題がある。
本発明では、正確なシミュレーションを行い、かつ計算時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明では、生産ラインの物流を予測する生産シミュレーション装置であって、シミュレーションの入力情報である部品を生産ラインに投入する日時を特定する投入計画情報と、生産ラインにおける各工程の内容を特定する工程情報と、前記工程の順序を特定する工程経路情報の入力を受け付ける入力部と、前記入力部において入力された情報を記憶する記憶部と、前記工程情報及び前記工程経路情報を用いて、ブロック間でイベント計算処理結果が相互に影響を及ぼし合わないように生産ラインの工程を複数ブロックに分割する処理と、前記投入計画情報に基づいて生成される各ブロックのイベントの実行日時の順序から並列計算可能なイベント群を形成する処理と、当該イベント群を複数プロセッサに割り当てる処理と、各プロセッサに割り当てられたイベントの計算処理を実行する制御部と、備える構成とする。
【発明の効果】
【０００７】
本発明により、本装置の利用者は、短時間で正確な生産シミュレーションを実行できる。
【図面の簡単な説明】
【０００８】
【図１】生産シミュレーション装置の機能ブロック図である。
【図２】生産ラインの一例を示す概略図である。
【図３】投入計画情報テーブルの概略図である。
【図４】工程経路情報テーブルの概略図である。
【図５】工程情報テーブルの概略図である。
【図６】リソース情報テーブルの概略図である。
【図７】工程影響関係情報テーブルの概略図である。
【図８】ブロック先行関係情報テーブルの概略図である。
【図９】イベントリスト情報テーブルの概略図である。
【図１０】ブロック毎日時情報テーブルの概略図である。
【図１１】シミュレーション結果情報テーブルの概略図である。
【図１２】コンピュータの概略図である。
【図１３】生産シミュレーション処理を示すフローチャートである。
【図１４】工程分割処理を示すフローチャートである。
【図１５】工程影響関係取得処理1を示すフローチャートである。
【図１６】工程影響関係取得処理2を示すフローチャートである。
【図１７】工程影響関係取得処理3を示すフローチャートである。
【図１８】ブロック作成処理を示すフローチャートである。
【図１９】並列計算可能イベント抽出処理を示すフローチャートである。
【図２０】並列計算可能イベント抽出処理を示すフローチャートである。
【図２１】イベント並列計算処理を示すフローチャートである。
【図２２】工程分割処理及び並列計算可能イベント抽出処理を示す概略図である。
【図２３】出力画面の一例を示す概略図である。
【図２４】出力画面の一例を示す概略図である。
【発明を実施するための形態】
【０００９】
本発明では、対象となる生産ラインを複数のブロックに分割し、分割したブロックにおけるイベントの実行日時の順序から、正しいシミュレーション結果を得つつ並列計算可能なイベント群を形成する。図22に本発明の概略図を示す。本発明では、図22上段に示すような生産ライン構成(工程の流れや各工程の利用リソースなど)の情報に基づき、ある工程のイベント計算処理が他工程のイベント計算処理に影響を及ぼすか否かの工程影響関係(図22中段)を求める。例えば図22では、工程1と工程2は設備を共有するため相互に影響を及ぼし合う。また、工程4は有限容量の部品置き場を利用するため、当該置き場が部品で埋まると前工程である工程3の部品を移動できなくなるため、工程4のイベント計算処理が工程3のイベント計算処理に影響する。次に、上記により求めた工程影響関係の中で、相互に影響し合う工程をブロック化することで、生産ラインを相互影響のない複数のブロックに分割する。その結果、図22下段に示すように、生産ライン全体を、一方向にしか影響を及ぼさないブロックがつながった形で表現できる。そして、あるブロックのイベントの最早実行日時が、当該ブロックが影響を及ぼす他のブロックのイベントの最早実行日時より将来の場合は、当該ブロックの最早実行日時イベントを並列計算可能なイベントと判定することで並列計算可能なイベント群を形成する。そして、形成したイベント群を複数プロセッサに割り振り並列計算することで、計算時間を短縮する。以下に詳細に説明をする。
【００１０】
本発明では、生産ラインの将来の物流を予測する生産シミュレーションを対象とする。図2は、ある生産ラインの工程フローの例である。図2に示す生産ラインの工程フローには、寸法旋盤、外形旋盤などの複数の工程がある。以下、本例を対象として本発明の詳細を説明する。
【００１１】
図1は、生産シミュレーション装置の機能ブロック図である。図示するように、生産シミュレーション装置は、記憶部110、制御部120及び121、入力部130、表示部140、通信部150、を備える。記憶部110は、投入計画情報記憶領域111、工程経路情報記憶領域112、工程情報記憶領域113、リソース情報記憶領域114、工程影響関係情報記憶領域115、ブロック先行関係情報記憶領域116、イベントリスト情報記憶領域117、ブロック毎日時情報記憶領域118、シミュレーション結果情報記憶領域119を備える。
【００１２】
投入計画情報記憶領域111は、生産ラインに投入する部品番号や、当該部品の品種や、当該部品の投入日時を特定する投入計画情報を記憶する。例えば、本実施形態においては、図3に示すような投入計画情報テーブルを記憶する。図示するように、投入計画情報テーブルは、部品番号欄111a、品種欄111b、投入日時欄111cを有する。部品番号欄111aには、部品を特定する情報を格納する。品種欄111bには、部品番号欄111aで特定される部品の品種を特定する情報を格納する。投入日時欄111cには、部品番号欄111aで特定される部品の投入日時を特定する情報を格納する。
【００１３】
図1に戻り、工程経路情報記憶領域112は、各品種の工程順序情報と工程名称情報を記憶する。例えば、本実施形態においては、図4に示すような工程経路情報テーブルを記憶する。図示するように、工程経路情報テーブルは、品種欄112a、工程順序欄112b、工程名称欄112cを有する。品種欄112aには、品種を特定する情報を格納する。工程順序欄112bには、品種欄112aで特定される品種に対する工程の処理順序の通し番号を特定する情報を格納する。工程名称欄112cには、品種欄112aで特定される品種の、工程順序欄112bで特定される工程順序に対応する工程名称を特定する情報を格納する。
【００１４】
図1に戻り、工程情報記憶領域113は、工程名称、当該工程における作業時間、当該工程における利用リソース名称、当該工程が属するブロック番号を特定する工程情報を記憶する。例えば、本実施形態においては、図5に示すような工程情報テーブルを記憶する。図示するように、工程情報テーブルは、工程名称欄113a、作業時間欄113b、利用リソース名称：工程前置き場欄113c、利用リソース名称：その他欄113d、ブロック番号欄113eを有する。工程名称欄113aには、工程名称を特定する情報を格納する。作業時間欄113bには、工程名称欄113aで特定される工程の作業時間を特定する情報を格納する。利用リソース情報：工程前置き場欄113cには、工程名称欄113aで特定される工程において利用する部品置き場を特定する情報を格納する。利用リソース名称：その他欄113dには、工程名称欄113aで特定される工程において利用する設備や作業者などのリソース名称を特定する情報を格納する。ブロック番号欄113eには、工程名称欄113aで特定される工程が属するブロック番号を特定する情報を格納する。
【００１５】
図1に戻り、リソース情報記憶領域114は、リソース名称や、当該リソースの容量を特定するリソース情報を格納する。例えば、本実施形態に置いては、図6に示すようなリソース情報テーブルを記憶する。図示するように、リソース情報テーブルは、リソース名称欄114a、容量欄114bを有する。リソース名称欄114aには、リソース名称を特定する情報を格納する。容量欄114bには、リソース名称欄114aで特定されるリソースの容量を特定する情報を格納する。
【００１６】
図1に戻り、工程影響関係情報記憶領域115は、影響元工程名称と影響先工程名称を特定する工程影響関係情報を記憶する。例えば、本実施形態においては、図7に示すような工程影響関係情報テーブルを記憶する。図示するように、工程影響関係情報テーブルは、影響元工程名称欄115a、影響先工程名称欄115bを有する。影響元工程名称欄115aには、工程名称を特定する情報を格納する。影響先工程名称欄115bには、影響元工程名称欄115aで特定される工程におけるイベントの計算処理を実行した際、他の工程のうちでイベント計算処理結果が影響をうける工程名称を特定する情報を格納する。例えば図7では、A寸法旋盤工程におけるイベントの計算処理を実行した結果が、A外径旋盤工程におけるイベントの計算処理の実行結果に影響を及ぼすことを表す。
【００１７】
図1に戻り、ブロック先行関係情報記憶領域116は、生産ラインを複数ブロックに分割した際のブロック番号と、当該ブロック番号で特定されるブロックの下流のブロックのブロック番号を特定する情報を記憶する。例えば、本実施形態においては、図8に示すようなブロック先行関係情報テーブルを記憶する。図示するように、ブロック先行関係情報テーブルは、上流ブロック番号欄116a、下流ブロック番号欄116bを有する。上流ブロック番号欄116aには、ブロック番号を特定する情報を格納する。下流ブロック番号欄116bには、上流ブロック番号欄116aで特定されるブロックの下流のブロックのブロック番号を特定する情報を格納する。例えば、図22において、ブロック１の下流ブロックはブロック２であり、ブロック２の下流ブロックは３である。この場合ブロック先行関係情報テーブルには、上流ブロック欄が１、下流ブロック欄が２のレコードと、上流ブロック欄が２、下流ブロック欄が３のレコードを格納する。
【００１８】
図1に戻り、イベントリスト情報記憶領域117は、生産シミュレーション実行時のイベントリストの情報を記憶する。例えば、本実施形態においては、図9に示すようなイベントリスト情報テーブルを記憶する。図示するように、イベントリスト情報テーブルは、ブロック番号欄117a、イベント実行日時欄117b、イベント番号欄117c、イベント分類欄117d、イベント実行工程欄117eを有する。ブロック番号欄117aには、ブロック番号を特定する情報を格納する。イベント実行日時欄117bには、シミュレーション上でのイベントの実行日時を特定する情報を格納する。イベント番号欄117cには、ブロック番号欄117aで特定されるブロックにおけるイベントを、イベント実行日時昇順に並べた際の通し番号を特定する情報を格納する。イベント分類欄117dには、当該イベントの分類を特定する情報を格納する。分類とは、例えば投入、移動、作業完了などの種別であり、投入は当該イベントが部品を生産ラインに投入するイベントであること、移動は部品を現工程から次工程へ移動するイベントであること、作業完了は部品の現工程の作業を完了するイベントであることを表す。イベント実行工程欄117eには、当該イベントを実行する工程を特定する情報を格納する。
【００１９】
図1に戻り、 ブロック毎日時情報記憶領域118は、生産シミュレーションの実行中において、各ブロックがどの日時までシミュレーションが完了しているかの情報を記憶する。例えば、本実施形態においては、図10に示すようなブロック毎日時情報テーブルを記憶する。図示するように、ブロック毎日時情報テーブルは、ブロック番号欄118a、シミュレーション上日時欄118bを有する。ブロック番号欄118aにはブロック番号を特定する情報を格納する。シミュレーション上日時欄118bには、生産シミュレーションの実行中において、ブロック番号欄118aで特定されるブロックがどのシミュレーション上日時まで完了しているかを特定する情報を格納する。
【００２０】
図1に戻り、シミュレーション結果情報記憶領域119は、生産シミュレーションの結果として、各部品の各工程の開始・終了日時情報を記憶する。例えば、本実施形態においては、図11に示すようなシミュレーション結果情報テーブルを記憶する。図示するように、シミュレーション結果情報テーブルは、部品番号欄119a、工程名称欄119b、開始日時欄119c、終了日時欄119dを特定する情報を格納する。部品番号欄119aには部品を特定する情報を格納する。工程名称欄119bには工程を特定する情報を格納する。開始日時欄119c及び終了日時欄119dには、部品番号欄119aで特定される部品の、工程名称欄119bで特定される工程の開始日時及び終了日時を特定する情報を格納する。
【００２１】
図1に戻り、制御部120は、工程分割部1201、並列計算可能イベント抽出部1202を備える。工程分割部1201は、工程経路情報、工程情報、リソース情報に基づき、ブロック間でイベント実行による相互影響が無いように、生産ラインを複数のブロックに分割する処理を行う。本処理の詳細は後述する。
【００２２】
並列計算可能イベント抽出部1202は、各ブロックにおける最早実行日時イベントから、並列計算可能なイベント群を抽出する処理を行う。本処理の詳細は後述する。制御部121は、イベント計算処理部1211を備える。イベント計算処理部1211は、イベント実行の計算処理を行う。本装置は、プロセッサ毎に制御部121を有する。入力部130は、生産シミュレーション装置の利用者から、前記記憶部110に記憶する情報の入力を受け付ける。表示部140は、前記記憶部110の情報を出力する。例えば、表示部140は、前記記憶部110のイベントリスト情報記憶領域117やブロック毎日時情報記憶領域118とシミュレーション結果情報記憶領域119の情報を表示する処理を行う。通信部150は、ネットワークを介した情報の送受信を行う。
【００２３】
以上に記載した生産シミュレーション装置は、例えば、図12に示すような、CPU(Central Processing Unit)151と、メモリ152と、HDD(Hard Disk Drive)などの外部記憶装置153と、CD(Compact Disk)やDVD(Digital Versatile Disk)などの可搬性を有する記憶媒体158に対して情報を読み書きする読書装置157と、キーボードやマウスなどの入力装置156と、ディスプレイなどの出力装置155と、通信ネットワークに接続するためのNIC(Network Interface Card)などの通信装置154と、を備えた一般的なコンピュータで実現できる。
【００２４】
例えば、記憶部110は、ＣＰＵ151がメモリ152又は外部記憶装置153を利用することにより実現可能であり、制御部120は、外部記憶装置153に記憶されている所定のプログラムをメモリ152にロードしてＣＰＵ151で実行することで実現可能であり、入力部130は、ＣＰＵ151が入力装置156を利用することで実現可能であり、表示部140は、ＣＰＵ151が出力装置155を利用することで実現可能であり、通信部150は、ＣＰＵ151が通信装置154を利用することで実現可能である。
【００２５】
この所定のプログラムは、読書装置157を介して記憶媒体158から、あるいは、通信装置154を介してネットワークから、外部記憶装置153にダウンロードし、それから、メモリ152上にロードしてＣＰＵ151により実行するようにしてもよい。また、読書装置157を介して記憶媒体158から、あるいは、通信装置154を介してネットワークから、メモリ152上に直接ロードし、ＣＰＵ151により実行するようにしてもよい。
【００２６】
上述したような生産シミュレーション装置は、以下に示す生産シミュレーション処理により、複数プロセッサを用いて計算時間を短縮したシミュレーションを実現する。図13〜図21は生産シミュレーション処理を示すフローチャートである。以下、図13〜図21を参照して、本発明の実施形態について詳しく説明する。
【００２７】
図13は、生産シミュレーション処理のフローチャートである。生産シミュレーション処理を始める前に、利用者がシミュレーションに必要となる情報を入力部130から入力し、記憶部110にて記憶される。前述の投入計画情報、工程経路情報、工程情報（ブロック番号を除く）、リソース情報等の情報は予め入力しておく。ステップS100では、生産ラインを複数のブロックに分割する。詳細は後述する。ステップS200では、投入計画情報テーブルから投入イベントを作成し、作成したイベント情報をイベントリスト情報テーブルに格納する。ステップS300では、イベントリストにレコードがあるかどうかを判定し、ある場合はステップS400へ、無い場合はステップS600へ進む。ステップS400では、イベントリストから並列計算可能イベントを抽出する。詳細は後述する。ステップS500では、抽出した並列計算可能イベントに対して、複数プロセッサを用いてイベント実行計算処理を行う。並列計算可能なイベントが無い場合は１つのプロセッサを用いてイベント実行計算処理を行う。イベント計算処理の結果新たに発生するイベントは、イベントリスト情報テーブルに追加される。イベントリスト情報テーブルからイベントを取得してイベント計算処理を行いイベントリスト情報テーブルのレコードがなくなるまで繰り返し計算処理を行う。詳細は後述する。ステップS600では、シミュレーション結果を出力し、シミュレーションを終了する。
【００２８】
以下、図13のステップS100工程分割処理の詳細を説明する。図14は本処理の詳細を示すフローチャートである。ステップS110では、工程影響関係取得処理1を実行する。本処理では、工程の前後関係による工程影響関係の情報を取得する。詳細は後述する。ステップS120では、工程影響関係取得処理2を実行する。本処理では、有限容量の部品置き場が埋まることによる工程影響関係の情報を取得する。詳細は後述する。ステップS130では、工程影響関係取得処理3を実行する。本処理では、工程間のリソース共有による工程影響関係の情報を取得する。詳細は後述する。ステップS140では、ブロック作成処理を実行する。本処理では、上記工程影響関係取得処理1、2、3で取得した工程影響関係に基づき、生産ラインを複数ブロックに分割する。詳細は後述する。
【００２９】
以下、図14のステップS110工程影響関係取得処理1の詳細を説明する。本処理では、各品種の工程経路における工程の前後関係を基にして、工程影響関係情報テーブルにレコードを追加する。ここでは、工程経路上で上流の工程のイベント実行は下流の工程のイベント実行に影響を及ぼすという関係を利用して、影響元工程を上流工程、影響先工程を下流工程とするレコードを追加する。図15は本処理の詳細を示すフローチャートである。
【００３０】
ステップS111では、工程経路情報テーブルのレコード数を取得し、取得した値をNに代入する。ステップS113〜S117は、カウンタiが1からN-1の範囲で繰り返す。ステップS113では、工程経路情報テーブルのレコードi（テーブル上で上からi番目のレコード）の工程名称を取得し、取得した値をProに代入する。ステップS114では、工程経路情報テーブルのレコードiとレコードi+1の品種が同じであるかどうかを判定し、同じ場合はステップS115へ、同じでない場合はステップS117へ進む。ステップS115では、工程経路情報テーブルのレコードi+1の工程名称を取得し、取得した値をNextProに代入する。ステップS116では、工程影響関係情報テーブルに、影響元工程名称がProで、影響先工程名称がNextProのレコードを追加する。
【００３１】
以下、図14のステップS120工程影響関係取得処理2の詳細を説明する。工程経路上で下流の工程が利用する置き場が有限容量の場合、置き場が部品で埋まり、上流工程から部品を移動できない状態が発生することがある。この場合、下流工程のイベント実行結果が上流工程のイベント実行結果に影響を及ぼすことになる。本処理では、上記の現象に基づき、前記工程影響関係処理1で追加した工程影響関係情報テーブルの各レコードについて、影響先工程つまり工程経路上で下流の工程が利用する部品置き場の容量が有限値の場合、影響元工程が下流工程、影響先工程が上流工程のレコードを追加する。図16は本処理の詳細を示すフローチャートである。
【００３２】
ステップS121では、工程影響関係情報テーブルのレコード数を取得し、取得した値をNに代入する。ステップS123〜S127は、カウンタiが1からNの範囲で繰り返す。ステップS123では、工程影響関係情報テーブルのレコードiの影響元工程名称と影響先工程名称を取得し、それぞれProとNextProに代入する。テップS124では、工程情報テーブルから、NextProの利用リソース：工程前置き場名称を取得し、取得した値をBuffに代入する。ステップS125では、リソース情報テーブルにおいて、置き場Bufの容量が有限値であるかどうかを判定し、有限値の場合はS126ステップへ、有限値でない場合はステップS127へ進む。ステップS126では、工程影響関係情報テーブルに、影響元工程名称がNextProで、影響先工程名称がProのレコードを代入する。
【００３３】
以下、図14のステップS130工程影響関係取得処理3の詳細を説明する。複数の工程でリソースを共有する場合、例えば工程Aと工程Bが設備１を共有する場合、工程Aのイベント実行結果は工程Bのイベント実行結果に影響する。また、工程Bのイベント実行結果は工程Aのイベント実行結果に影響する。本処理では、リソースを共有する2つの工程に対し、それぞれの工程を影響先工程、影響元工程とするレコードを、工程影響関係情報テーブルに追加する。図17は本処理の詳細を示すフローチャートである。
【００３４】
ステップS131では、工程情報テーブルのレコード数を取得し、取得した値をNに代入する。ステップS133〜S1310は、カウンタiが1からNの範囲で繰り返す。
ステップS133では、工程情報テーブルのレコードiの工程名称を取得し、取得した値をPro1に代入する。また、Pro1の利用リソース：その他を取得し、取得した値をRes1に代入する。ステップS135〜S139は、カウンタjが1からNの範囲で繰り返す。ステップS135では、工程情報テーブルのレコードjの工程名称を取得し、取得した値をPro2に代入する。また、Pro2の利用リソース：その他を取得し、取得した値をRes2に代入する。ステップS136では、Pro1とPro2が同じであるかどうかを判定し、同じである場合はステップS139へ、同じでない場合はステップS137へ進む。ステップS137では、Res1とRes2両方に含まれるリソースがあるかどうかを判定し、ある場合はステップS138へ、無い場合はステップS139へ進む。ステップS138では、工程影響関係情報テーブルに、影響元工程名称がPro1で、影響先工程名称がPro2のレコードと、影響元工程名称がPro2で、影響先工程名称がPro1のレコードを追加する。
【００３５】
本実施例では、シミュレーションの入力データである工程経路や利用リソースの情報を用いた工程影響関係取得処理のみを説明しているが、本発明は工程影響関係取得処理の方法を限定するものではない。例えば、後工程の各日時における仕掛り数に応じて前工程の部品着手順序を制御する場合においても、後工程のイベント計算処理結果が前工程のイベント計算処理結果が影響を及ぼす。このように、ある工程Aにおける仕掛り数などの時間経過とともに変化する情報を、他の工程Bのイベント計算処理において用いるのであれば、工程Aのイベント計算処理結果が工程Bのイベント計算処理結果に影響を与えるという工程影響関係を取得すればよい。
【００３６】
以下、図14のステップS140ブロック作成処理の詳細を説明する。本処理では、上記処理で作成した工程影響関係情報テーブルの情報に基づき、ブロック間では一方向にしか影響を及ぼさないように生産ラインを複数のブロックに分割する。図18は本処理の詳細を示すフローチャートである。
【００３７】
ステップS141では、各工程を表すノードと、工程影響関係情報テーブルの影響元工程を始点、影響先工程を終点とするアークにより、工程間の影響関係を表す有向グラフを作成する。ステップS142では、ブロック番号カウンタkを1に設定する。ステップS143では、有向グラフからブロック化されていないループ構造を1つ検出する。ステップS144では、ブロック化されてないループ構造があるかどうかを判定し、ある場合はステップS145へ、無い場合はステップS148へ進む。ステップS145では、有向グラフ上で、検出したループ構造をブロック化し、ブロック番号kを付与する。ステップS146では、工程情報テーブルにおいて、検出したループ構造の構成ノードに対応する工程のブロック番号をkに設定する。ステップS147では、kに1を加える。ステップS148では、工程情報テーブルのレコード数を取得し、取得した値をNに代入する。ステップS1410〜S1413は、カウンタiが1からNの範囲で繰り返す。ステップS1410では、工程情報テーブルにおいて、レコードiのブロック番号が未設定であるかどうかを判定し、未設定の場合はステップS1411へ、設定済みの場合はステップS1413へ進む。ステップS1411では、工程情報テーブルのレコードiのブロック番号をkに設定する。ステップS1412では、kに1を加える。
ステップS1414では、有向グラフから、アークの始点のブロック番号とアークの終点のブロック番号の組合せの情報を取得し、ブロック先行関係情報テーブルに、上流ブロック番号が始点ブロック番号で、下流ブロック番号が終点ブロック番号のレコードを追加する。
【００３８】
以上の処理により、各工程に対するブロック番号の設定とブロック先行関係の取得が完了する。本実施例では、有向グラフの作成とループ構造の検出によるブロック化の方法を記したが、必ずしも計算機上で実際に有向グラフを作成する必要はなく、工程影響関係情報テーブルの情報を用いて同様の処理を実現しても良い。
【００３９】
以下、図13のステップS400並列計算可能イベント抽出処理の詳細を説明する。本処理では、工程分割処理により取得した各工程のブロック番号とブロック先行関係に基づき、各ブロックにおける最早実行日時イベントから並列計算可能なイベント群を抽出する。具体的には、上流ブロックから下流ブロックにかけて、上流ブロックのイベントの実行日時と下流ブロックのイベントの実行日時を比較し、上流ブロック実行日時＞下流ブロック実行日時（上流ブロック実行日時が下流ブロック実行日時よりも後に到来）の関係を満たしていれば、下流ブロックのイベントを並列計算可能なイベントとして抽出する。図19、20は本処理の詳細を示すフローチャートである。
【００４０】
ステップS401〜S4014では、最も上流に位置するブロックのイベントを、並列計算可能なイベントとして抽出する。ステップS401では、イベントリスト情報テーブルから、各ブロック毎の最早実行日時イベントを取得し、取得したイベント群をEveFamilyに代入し、取得したイベント数をNに代入する。ステップS402では、イベント群EveFamily中の各イベントの判定済みフラグをfalseに設定する。ステップS403では、ブロック先行関係情報テーブルにおいて、下流ブロック番号に登場しないブロック番号を取得し、取得したブロック番号群をBlockFamily1に代入し、取得したブロック数をMに代入する。
ステップS404では、ブロック番号群BlockFamily2を空にする。ステップS406〜S4014は、カウンタiが1からMの範囲で繰り返す。ステップS406では、ブロック番号群BlockFamily1中のi番目のブロック番号を取得し、取得したブロック番号をBlock1とする。ステップS408〜S4013は、カウンタjが1からNの範囲で繰り返す。ステップS408では、イベント群EveFamily中のj番目のイベントを取得し、取得したイベントをEve1とする。ステップS409では、イベントEve1のブロック番号がBlock1と一致するかどうかを判定し、一致する場合はステップS4010へ、一致しない場合はステップS4013へ進む。ステップS4010では、イベントEve1の判定済みフラグをtrueに設定する。ステップS4011では、イベントEve1を並列計算可能イベント群に追加する。ステップS4012では、ブロック毎日時情報テーブルに対し、ブロック番号がBlock1であるレコードのシミュレーション上日時欄に、Eve1の実行日時を格納する。
【００４１】
次に、ステップS4015〜S4031は、最上流のブロックから逐次的に下流ブロックに進みながら、並列計算可能なイベントを抽出する。ステップS4015では、ブロック番号群BlockFamily1中のブロックを上流ブロックとするブロック番号を取得し、取得したブロック番号群をBlockFamily2に代入する。ステップS4016では、ブロック番号群BlockFamily1をブロック番号群BlockFamily2で置き換える。ステップS4017では、ブロック番号群BlockFamily1のブロック数を取得し、取得したブロック数をMに代入する。ステップS4018では、ブロック番号群BlockFamily2を空に設定する。ステップS4020〜S4031は、カウンタiが1からMの範囲で繰り返す。ステップS4020では、ブロック番号群BlockFamily1中のi番目のブロック番号を取得し、取得したブロック番号をBlock1に代入する。
【００４２】
ステップS4022〜S4030は、カウンタjが1からNの範囲で繰り返す。ステップS4022では、イベント群EveFamily中のi番目のイベントを取得し、取得したイベントをEve1に代入する。ステップS4023では、イベントEve1の判定済みフラグがfalseであるかどうかを判定し、falseの場合はステップS4024へ、falseでない場合はステップS4030へ進む。ステップS4024では、イベントEve1のブロック番号がBlock1と一致するかどうかを判定し、一致する場合はステップS4025へ、一致しない場合はステップS4030へ進む。ステップS4025では、イベントEve1の判定済みフラグをtrueに設定する。ステップS4026では、Eve1の実行日時が、Block1の全ての上流ブロックの実行日時より過去であるかどうかを判定し、過去である場合はステップS4027へ、過去でない場合はステップS4029へ進む。ステップS4027では、イベントEve1を並列計算可能イベン群に追加する。ステップS4028では、ブロック毎日時情報テーブルに対し、ブロック番号がBlock1であるレコードのシミュレーション上日時欄に、Eve1の実行日時を格納する。ステップS4029では、ブロック毎日時情報テーブルに対し、ブロック番号がBlock1であるレコードのシミュレーション上日時欄に、Block1の上流ブロックのシミュレーション上日時の最小値を格納する。ステップS4032では、イベント群EveFamilyの全てのイベントの判定済みフラグがtrueであるかどうかを判定し、trueである場合は並列計算可能イベント抽出処理を終了し、trueでない場合はステップS4015へ進む。
【００４３】
以下、図13のステップイベントS500並列計算処理の詳細を説明する。本処理では、並列計算可能イベント抽出処理の処理結果である並列計算可能イベント群のイベントを、複数プロセッサに割り当ててイベント計算処理の並列実行を行う。図21は本処理の詳細を示すフローチャートである。
【００４４】
ステップS501では、プロセッサ数を取得し、取得した値をMに代入する。プロセッサ数の取得方法としては、計算機のプロセッサ数を取得する、本装置の利用者が設定するなどの方法があるが、本発明はその方法を限定するものではない。ステップS502では、並列計算可能イベント群のイベント数を取得し、取得した値をNに代入する。ステップS503では、プロセッサカウンタkを初期値1に設定する。ステップS505〜S510は、カウンタiが1からNの範囲で繰り返す。
【００４５】
ステップS505では、並列計算可能イベント群のi番目のイベントを取得し、取得したイベントをEvとする。ステップS506では、k番目のプロセッサに対し、イベントEvの計算処理を開始させる。ステップS507では、プロセッサカウンタkに1を加える。ステップS508では、kがMに等しいかどうかを判定し、等しい場合はステップS509へ、等しくない場合はステップS510へ進む。
【００４６】
ステップS509では、プロセッサカウンタkを1に設定する。ステップS511では、並列計算可能イベント群の全てのイベントを、イベントリスト情報テーブルから削除する。ステップS512では、M個全てのプロセッサのイベント計算処理が完了するまで待機する。
【００４７】
以上の処理により、複数プロセッサによるイベント計算処理の並列実行が実現できる。尚、本実施例では、M個のプロセッサにイベントを1つずつ割り当てることで、各プロセッサが処理するイベント数を均等化しているが、本発明はその方法を限定するものではない。例えば、各プロセッサの負荷状況をモニタリングして、負荷の小さいプロセッサに順次イベントを割り当てる方法を用いても良い。また、本実施例では、ステップS512において、全てのプロセッサにおけるイベント計算処理が完了するまで待機をする処理を記したが、本発明はこのような待機処理に限定されるものではない。例えば、少なくとも１つのプロセッサのイベント処理計算が完了するまで待機するようにしても良いし、イベント処理計算完了を待機しないようにしても良い。
【００４８】
イベント処理結果は、図11に示すようなシミュレーション結果情報テーブルとしてシミュレーション結果情報記憶領域119に格納される。利用者は図11の情報の分析を行うことで、迅速で、正確な生産計画立案や生産ライン設計が可能となる。本実施例では、１回の生産シミュレーションの計算処理を複数プロセッサに割り当てる処理を説明しているが、本割り当て処理は、投入計画などの入力情報の異なる複数の生産シミュレーションの並列実行と組み合わせても良い。例えば、8個のプロセッサを用いて、入力情報の異なる2回の生産シミュレーション(シナリオA、B)を実行する際、シナリオAの計算処理を4個のプロセッサに割り当て、シナリオBの計算処理を残り4個のプロセッサに割り当てても良いし、各シナリオで用いるプロセッサ数を固定せず、シナリオA、Bで8個のプロセッサを共用するように割り当てても良い。
【００４９】
図23は表示画面の一例を示す概略図である。図23は、前記記憶部110の工程情報記憶領域113の情報を表示するための表示画面であり、当該表示画面は例えば、工程表示領域141a、ブロック表示領域141bを有する。本表示画面により、本装置の利用者は、生産ラインがどのようにブロック化されたかを確認することができる。
【００５０】
図24は表示画面の一例を示す概略図である。図24は、前記記憶部110の工程情報記憶領域113、イベントリスト情報記憶領域117、ブロック毎日時情報記憶領域118、シミュレーション結果情報記憶領域119シミュレーション結果情報記憶領域118の情報を表示するための表示画面であり、当該表示画面は例えば、工程表示領域142a、ブロック表示領域142b、各工程の仕掛り部品表示領域142c、イベントリスト表示領域142d、シミュレーション実行ボタン領域142e、シミュレーション停止ボタン領域142fを有する。本表示画面により、本装置の利用者は、シミュレーションの実行途中における各工程の部品仕掛り状況や各ブロックのイベントリストの情報を確認できる。
【符号の説明】
【００５１】
110…記憶部、111…投入計画情報記憶領域、112…工程経路情報記憶領域、113…工程情報記憶領域、114…リソース情報記憶領域、115…工程影響関係情報記憶領域、116…ブロック先行関係情報記憶領域、117…イベントリスト情報記憶領域、118…ブロック毎日時情報記憶領域、119…シミュレーション結果情報記憶領域、120…制御部0、121…制御部1〜N、1201…工程分割部、1202…並列計算可能イベント抽出部、1211…イベント計算処理部、130…入力部、140…表示部、150…通信部、151…CPU、152…メモリ、153…外部記憶装置、154…通信装置、155…出力装置、156…入力装置、157…読書装置、158…記憶媒体、141a…工程表示領域、141b…ブロック表示領域、142a…工程表示領域、142b…ブロック表示領域、142c…各工程の仕掛り部品表示領域、142d…イベントリスト表示領域、142e…シミュレーション実行ボタン領域、142f…シミュレーション停止ボタン領域
【図１】
0005779537.tif 000002
【図２】
0005779537.tif 000003
【図３】
0005779537.tif 000004
【図４】
0005779537.tif 000005
【図５】
0005779537.tif 000006
【図６】
0005779537.tif 000007
【図７】
0005779537.tif 000008
【図８】
0005779537.tif 000009
【図９】
0005779537.tif 000010
【図１０】
0005779537.tif 000011
【図１１】
0005779537.tif 000012
【図１２】
0005779537.tif 000013
【図１３】
0005779537.tif 000014
【図１４】
0005779537.tif 000015
【図１５】
0005779537.tif 000016
【図１６】
0005779537.tif 000017
【図１７】
0005779537.tif 000018
【図１８】
0005779537.tif 000019
【図１９】
0005779537.tif 000020
【図２０】
0005779537.tif 000021
【図２１】
0005779537.tif 000022
【図２２】
0005779537.tif 000023
【図２３】
0005779537.tif 000024
【図２４】
0005779537.tif 000025