(57)【要約】【課題】より効率的な生産物流計画の立案を支援する技術の提供を目的とする。【解決手段】並列分散処理制御システムであって、製品の生産物流プロセスを構成する複数の工程を含む工程情報と、工程に対するシミュレーション結果の値を算出する複数のＣＰＵに関するＣＰＵ情報と、前記生産物流プロセスにおける制約値とを記憶する記憶部と、前記複数の工程をグループ化して分割モデルを生成する分割モデル生成部と、前記分割モデルを前記複数のＣＰＵに割り付けるＣＰＵ割り付け部と、前記分割モデルを構成する前記工程に対する前記値を前記ＣＰＵに算出させるエンジン実行部と、前記値が前記制約値により定まる条件を満たすか否かを判定する制約監視部と、前記条件を満たす前記値を用いて結果情報を生成する出力情報生成部と、を備え、前記ＣＰＵ割り付け部は、前記複数のＣＰＵの処理負荷が平準化するよう前記分割モデルを割り付けることを特徴とする。【選択図】  図１
2020042623.tif 000002
【特許請求の範囲】
【請求項１】
製品の生産物流プロセスを構成する複数の工程を含む工程情報と、前記工程に対するシミュレーション結果の値を算出する複数のＣＰＵに関するＣＰＵ情報と、前記生産物流プロセスにおける制約値とを記憶する記憶部と、
前記複数の工程をグループ化して分割モデルを生成する分割モデル生成部と、
前記分割モデルを前記複数のＣＰＵに割り付けるＣＰＵ割り付け部と、
前記分割モデルを構成する前記工程に対する前記値を前記ＣＰＵに算出させるエンジン実行部と、
前記値が前記制約値により定まる条件を満たすか否かを判定する制約監視部と、
前記条件を満たす前記値を用いて結果情報を生成する出力情報生成部と、
を備え、
前記ＣＰＵ割り付け部は、前記複数のＣＰＵの処理負荷が平準化するよう前記分割モデルを割り付けることを特徴とする、並列分散処理制御システム。
【請求項２】
請求項１に記載の並列分散処理制御システムであって、
前記条件を満たさない前記値に係る前記工程に対して前記制約値を用いて目標値を設定し、前記工程と前記目標値とを関連付けた再実行情報を生成する再実行情報生成部を備え、
前記ＣＰＵ割り付け部は、前記再実行情報に対して前記ＣＰＵを割り付け、
前記エンジン実行部は、割り付けられた前記ＣＰＵに対して前記再実行情報を用いて前記値を算出させることを特徴とする、並列分散処理制御システム。
【請求項３】
請求項１に記載の並列分散処理制御システムであって、
前記記憶部は、前記生産物流プロセスを実行する各企業と制約項目との組合せに対して前記制約値を記憶しており、
前記制約監視部は、前記企業と前記制約項目との組合せ毎に前記値を合算して前記制約値と比較することにより、前記工程に対する前記値が前記条件を満たすか否かを判定することを特徴とする、並列分散処理制御システム。
【請求項４】
請求項３に記載の並列分散処理制御システムであって、
前記エンジン実行部は、前記工程に対する実績値又は計画値を前記値として算出させ、
前記記憶部は、前記制約値に係る前記工程に対して優先制約フラグの有無を関連付けて記憶しており、
前記制約監視部は、前記優先制約フラグが前記条件の影響を受けないことを示す情報である場合、前記工程の実績値は前記条件を満たすものと判定することを特徴とする、並列分散処理制御システム。
【請求項５】
請求項３に記載の並列分散処理制御システムであって、
前記制約項目は、生産量、出庫量、入庫量、保管料、輸送量の少なくとも１つを含むことを特徴とする、並列分散処理制御システム。
【請求項６】
請求項１に記載の並列分散処理制御システムであって、
前記工程情報には、前記生産物流プロセスを実行する各企業と前記製品の品目とを含む前記工程が含まれており、
前記分割モデル生成部は、前記品目に基づいて前記工程をグループ化して前記分割モデルを生成し、
前記ＣＰＵ割り付け部は、前記分割モデルに含まれる品目数が平準化するよう前記分割モデルを割り付けることを特徴とする、並列分散処理制御システム。
【請求項７】
請求項１に記載の並列分散処理制御システムであって、
前記出力情報生成部は、シミュレーションの実行に用いる前記ＣＰＵの数の入力を受け付けるＣＰＵ設定画面の出力情報を生成し、
前記ＣＰＵ割り付け部は、前記ＣＰＵ設定画面に入力された数の前記ＣＰＵに対し前記分割モデルを割り付けることを特徴とする、並列分散処理制御システム。
【請求項８】
コンピュータを並列分散処理制御装置として機能させるプログラムであって、
前記並列分散処理制御装置を、記憶部と、分割モデル生成部と、ＣＰＵ割り付け部と、エンジン実行部と、制約監視部と、出力情報生成部として機能させ、
前記記憶部は、製品の生産物流プロセスを構成する複数の工程を含む工程情報と、前記工程に対するシミュレーション結果の値を算出する複数のＣＰＵに関するＣＰＵ情報と、前記生産物流プロセスにおける制約値とを記憶しており、
前記分割モデル生成部に、前記複数の工程をグループ化して分割モデルを生成する分割モデル生成手順を実行させ、
前記ＣＰＵ割り付け部に、前記分割モデルを前記複数のＣＰＵに割り付けるＣＰＵ割り付け手順を実行させ、
前記エンジン実行部に、前記分割モデルを構成する前記工程に対する前記値を前記ＣＰＵに算出させるエンジン実行手順を実行させ、
前記制約監視部に、前記値が前記制約値により定まる条件を満たすか否かを判定する制約監視手順を実行させ、
前記出力情報生成部に、前記条件を満たす前記値を用いて結果情報を生成する出力情報生成手順を実行させ、
前記ＣＰＵ割り付け手順では、前記複数のＣＰＵの処理負荷が平準化するよう前記分割モデルを割り付けることを特徴とする、プログラム。
【請求項９】
並列分散処理制御装置が行う並列分散処理制御方法であって、
前記並列分散処理制御装置は、記憶部と、分割モデル生成部と、ＣＰＵ割り付け部と、エンジン実行部と、制約監視部と、出力情報生成部、を備え、
前記記憶部は、製品の生産物流プロセスを構成する複数の工程を含む工程情報と、前記工程に対するシミュレーション結果の値を算出する複数のＣＰＵに関するＣＰＵ情報と、前記生産物流プロセスにおける制約値とを記憶しており、
前記分割モデル生成部は、前記複数の工程をグループ化して分割モデルを生成する分割モデル生成手順を実行し、
前記ＣＰＵ割り付け部は、前記分割モデルを前記複数のＣＰＵに割り付けるＣＰＵ割り付け手順を実行し、
前記エンジン実行部は、前記分割モデルを構成する前記工程に対する前記値を前記ＣＰＵに算出させるエンジン実行手順を実行し、
前記制約監視部は、前記値が前記制約値により定まる条件を満たすか否かを判定する制約監視手順を実行し、
前記出力情報生成部は、前記条件を満たす前記値を用いて結果情報を生成する出力情報生成手順を実行し、
前記ＣＰＵ割り付け手順では、前記複数のＣＰＵの処理負荷が平準化するよう前記分割モデルを割り付けることを特徴とする、並列分散処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列分散処理制御システム、プログラム、及び並列分散処理制御方法に関する。
【背景技術】
【０００２】
生産・物流スケジュールを生成するための種々の技術が存在する。
【０００３】
特許文献１には、段落[００１４]に、「本実施の形態においては、製造プロセス・搬送における製品受入計画、製品出荷計画、在庫計画、設備使用計画、設備修理計画、設備能力、設備現況、工程現況、設備現況、在庫現況、設備稼働・故障現況、及び操業者からの操業前提条件の全て或いは一部を表わす入力データに基づいて、上記生産・物流計画の立案開始日時から予め設定された対象期間分を対象として、予め設定した精度に基づいて、製品、移動体、設備の処理に伴う作業群の関係、制約に対して、数式モデル３２１を構築するようにしている。」と記載されている。また、段落［００４０］には、「上述したように、初期値を移動させながら計算範囲を分割するようにしているので、計算負荷が大きなスケジュール問題を計算する場合においても実用時間内で計算することが可能となる。」と記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１１７３０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
生産物流計画を立案するに当たり、計算効率の向上が望まれる。
【０００６】
特許文献１に開示された技術では、計画作成期間を分割して計算しているが、分割後のモデル間に順序依存関係が生じるため、分割により得られるはずの効率化の効果が減殺される。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、より効率的な生産物流計画の立案を支援する技術の提供を目的とする。
【課題を解決するための手段】
【０００８】
本願は、上記課題の少なくとも一部を解決する手段を複数含んでいるが、その例を挙げるならば、以下の通りである。
【０００９】
上記課題を解決するため、本発明の並列分散処理制御システムは、製品の生産物流プロセスを構成する複数の工程を含む工程情報と、前記工程に対するシミュレーション結果の値を算出する複数のＣＰＵに関するＣＰＵ情報と、前記生産物流プロセスにおける制約値とを記憶する記憶部と、前記複数の工程をグループ化して分割モデルを生成する分割モデル生成部と、前記分割モデルを前記複数のＣＰＵに割り付けるＣＰＵ割り付け部と、前記分割モデルを構成する前記工程に対する前記値を前記ＣＰＵに算出させるエンジン実行部と、前記値が前記制約値により定まる条件を満たすか否かを判定する制約監視部と、前記条件を満たす前記値を用いて結果情報を生成する出力情報生成部と、を備え、前記ＣＰＵ割り付け部は、前記複数のＣＰＵの処理負荷が平準化するよう前記分割モデルを割り付けることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、より効率的な生産物流計画の立案を支援する技術を提供することができる。
【００１１】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】並列分散処理制御システムの機能ブロック図の一例を示す図である。
【図２】並列分散処理制御装置のハードウェア構成の一例を示す図である。
【図３】サプライチェーン構成マスタのデータ構造の一例を示す図である。
【図４】品目マスタのデータ構造の一例を示す図である。
【図５】制約マスタのデータ構造の一例を示す図である。
【図６】ＢＯＭ（Bill of materials）マスタのデータ構造の一例を示す図である。
【図７】本実施形態における分割モデル生成処理の一例を示すフローチャートである。
【図８】品目クラスタ情報のデータ構造の一例を示す図である。
【図９】分割モデル情報のデータ構造の一例を示す図である。
【図１０】ＣＰＵ情報生成処理の一例を示すフローチャートである。
【図１１】ＣＰＵ情報のデータ構造の一例を示す図である。
【図１２】計画立案処理の一例を示すフローチャートである。
【図１３】ＣＰＵ割り付け情報のデータ構造の一例を示す図である。
【図１４】日別結果情報のデータ構造の一例を示す図である。
【図１５】制約違反情報のデータ構造の一例を示す図である。
【図１６】結果調整情報のデータ構造の一例を示す図である。
【図１７】再実行情報のデータ構造の一例を示す図である。
【図１８】最終結果情報のデータ構造の一例を示す図である。
【図１９】ＣＰＵ設定画面の一例を示す図である。
【図２０】最終結果表示画面の一例を示す図である。
【発明を実施するための形態】
【００１３】
原材料及び部品の調達から、製造、在庫管理、配送、販売までの製品の生産物流プロセスは、現在、サプライチェーンとして運営されている。サプライチェーンの運営においては、需要変動や災害などの経営環境の変化に対応する必要がある。そのため、実際の業務をデジタル空間上に再現し、目標の需要充足率を満足させ、かつ、コストが最小となるような在庫配置や生産計画等をシミュレーションを用いて立案し、実務にフィードバックする手法がある。
【００１４】
実務で利用できる計画や指示を作成するためには、対象全体をモデル化し、細かい制約を考慮したうえで、実用時間内で高精度な結果を求める必要がある。本実施形態における並列分散処理制御システムは、サプライチェーンにおける効率的な生産物流計画の立案を支援する。
【００１５】
以下、図面に基づいて本発明の実施形態の例を説明する。図１は、並列分散処理制御システム１の機能ブロック図の一例を示す図である。並列分散処理制御システム１は、並列分散処理制御装置１００と、ユーザ端末装置２００と、サーバ装置３００と、を有する。並列分散処理制御装置１００は、１又は複数のユーザ端末装置２００と、１又は複数のサーバ装置３００と、ネットワーク５０を介して通信可能に接続されている。
【００１６】
並列分散処理制御装置１００は、ＰＣ（Personal Computer）、又はサーバコンピュータ等の端末装置である。ユーザ端末装置２００は、ＰＣ、又はスマートフォン等の端末装置である。サーバ装置３００は、サーバコンピュータ等の情報処理装置である。図１には、１つの並列分散処理制御装置１００に対し、１つのユーザ端末装置２００と、１つのサーバ装置３００とが接続されている状態が示されているが、装置数はこれに限定されない。
【００１７】
一例として、並列分散処理制御装置１００、ユーザ端末装置２００、及びサーバ装置３００は、本実施形態において提供される生産計画立案支援サービスのクライアントにより操作される。他の例として、並列分散処理制御装置１００及びサーバ装置３００は、当該生産計画立案支援サービスの事業者により操作され、ユーザ端末装置２００はクライアントにより操作される。
【００１８】
並列分散処理制御装置１００は、制御部１１０と、記憶部１２０と、入力部１３０と、出力部１４０と、通信部１５０とを備える。制御部１１０は、並列分散処理制御装置１００全体を統括的に制御する。記憶部１２０は、並列分散処理制御装置１００に入力された情報や、並列分散処理制御装置１００の処理過程で生成された情報を記憶する。
【００１９】
入力部１３０は、後述の入力装置１６１を用いてユーザからの入力操作を受け付ける。出力部１４０は、ディスプレイ等の出力装置に対して情報を出力させる。通信部１５０は、ユーザ端末装置２００又はサーバ装置３００との間で情報を送信及び受信する。
【００２０】
制御部１１０は、モデル分割部１１１と、計算実行部１１２と、実行制御部１１３とを備える。モデル分割部１１１は、効率的に生産計画を立案するための分割モデル生成を制御する。計算実行部１１２は、複数のＣＰＵ（Central Processing Unit）を用いたシミュレーションを制御する。実行制御部１１３は、シミュレーション結果を参照して制約条件を満たすか否かを判定し、入力操作に応じて結果を出力する。
【００２１】
モデル分割部１１１は、初期モデル受付部１１１１と、分割モデル生成部１１１２とを備える。初期モデル受付部１１１１は、製品の生産物流プロセスにおいて生成されるマスターデータを初期モデルとして読み込む。マスターデータは、例えばユーザ端末装置２００からネットワーク５０を介して初期モデル受付部１１１１に読み込まれ、後述するマスタ情報記憶部１２１に格納される。マスターデータには、生産物流プロセスを構成する複数の工程を含む工程情報としてのサプライチェーン構成マスタ等が含まれる。
【００２２】
分割モデル生成部１１１２は、サプライチェーン構成マスタに含まれる複数の工程をグループ化することにより、シミュレーションの対象となる計算モデルを分割した分割モデルを生成する。分割モデル生成部１１１２は、例えばサプライチェーン構成マスタに含まれる製品の品目に基づいて、工程をグループ化する。
【００２３】
計算実行部１１２は、ＣＰＵ割り付け部１１２１と、エンジン実行部１１２２とを含む。ＣＰＵ割り付け部１１２１は、分割モデルを複数のＣＰＵに割り付ける。その際、ＣＰＵ割り付け部１１２１は、複数のＣＰＵの処理負荷が平準化するよう、分割モデルを割り付ける。一例として、ＣＰＵ割り付け部１１２１は、分割モデルに含まれる品目の数が平準化するように割り付けを行う。また、ＣＰＵ割り付け部１１２１は、後述のエンジン実行部１１２２の制御により算出される値が制約条件を満たさない場合に生成される再実行情報を構成する計算モデルを、複数のＣＰＵに割り付ける。
【００２４】
なお、ＣＰＵ割り付け部１１２１が、ＣＰＵの処理負荷が平準化するよう分割モデルを割り付けることは、結果として各ＣＰＵの処理負荷が均一となることを意味しない。例えば本実施形態において、処理負荷を推定する目安として、分割モデル内の品目数を用いるが、同じ品目数の分割モデルについて異なるＣＰＵを用いてシミュレーションを行う場合であっても、分割モデルの内容によって処理負荷に多少のばらつきがある場合がある。
【００２５】
また、処理負荷の平準化には、レスポンスタイムの平準化の意味合いが含まれる。例えば、計算モデルを分割するに際し、計画作成期間が等しくなるよう分割してシミュレーションを行う場合を仮定する。計画における時刻が後である計算モデルは、時刻が前である計算モデルの計算後に計算が実行されることとなり、計算モデルに順序依存関係が生じる。この場合、時刻が後である計算モデルのレスポンスタイムは、時刻が前である計算モデルの処理開始時から計測されるため、両モデルのレスポンスタイムには大きな差が生じる。即ち、各々の計画作成期間が等しくなるよう計算モデルを分割する手法は、処理負荷を平準化することを意図したものではないといえる。
【００２６】
エンジン実行部１１２２は、分割モデルを割り当てられた複数のＣＰＵの各々に対し、生産物流計画における計画立案のための計算処理、即ち生産物流プロセスのシミュレーションを実行させる。その結果、分割モデルを構成する各工程について、現在及び将来の製品の生産量、保管料、出庫量、入庫量、又は輸送量等の値が算出される。エンジン実行部１１２２は、各ＣＰＵに対し、マスターデータ等に含まれる情報を用いたシミュレーションを実行させる。シミュレーションには公知の方法を用いるため、説明を省略する。
【００２７】
また、エンジン実行部１１２２は、再実行情報を構成する計算モデルを割り付けられたＣＰＵに対して、該再実行情報を用いてシミュレーションを実行させ、再度シミュレーション結果としての値を得る。
【００２８】
実行制御部１１３は、制約監視部１１３１と、再実行情報生成部１１３２と、出力情報生成部１１３３と、を備える。制約監視部１１３１は、生産物流プロセスに対して予め設定された制約値により定まる制約条件を、エンジン実行部１１２２の取得した値が満たすか否かを判定する。再実行情報生成部１１３２は、値が制約条件を満たさないと判定された工程に対し、制約値を用いて目標値を設定し、工程と関連付けた再実行情報を生成する。
【００２９】
出力情報生成部１１３３は、制約条件を満たす値を用いて結果情報を生成する。また、出力情報生成部１１３３は、結果情報を用いて後述する最終結果表示画面２５０の出力情報を生成してユーザ端末装置２００に送信する。また、出力情報生成部１１３３は、ＣＰＵ情報生成処理の開始指示を受け付けると、後述するＣＰＵ設定画面２４０の表示情報を生成してユーザ端末装置２００に送信する。
【００３０】
記憶部１２０は、マスタ情報記憶部１２１と、分割モデル情報記憶部１２２と、日別結果情報記憶部１２３と、再実行情報記憶部１２４と、最終結果情報記憶部１２５と、を備える。マスタ情報記憶部１２１は、初期モデル受付部１１１１により読み込まれたマスターデータを記憶する記憶領域である。分割モデル情報記憶部１２２は、分割モデル情報を記憶するほか、分割モデル情報の生成に用いられる品目クラスタ情報やＣＰＵ情報を記憶する記憶領域である。
【００３１】
日別結果情報記憶部１２３は、分割モデルを各ＣＰＵに割り付けるために用いられるＣＰＵ割り付け情報や、各ＣＰＵにより算出されたシミュレーション結果を示す日別結果情報、制約条件を満たさない値に関する制約違反情報、及び、制約条件を満たさない工程に対して、値を調整するために用いる結果調整情報を記憶する記憶領域である。再実行情報記憶部１２４は、制約条件を満たさない工程に対して設定された目標値を含む再実行情報を記憶する記憶領域である。
【００３２】
最終結果情報記憶部１２５は、制約条件を満たす値を用いて生成された結果情報を記憶する記憶領域である。
【００３３】
ユーザ端末装置２００は、入力部２１０と、出力部２２０と、通信部２３０とを備える。入力部２１０は、入力装置を介してユーザからの入力操作を受け付ける。出力部２２０は、ディスプレイ等の出力装置に対して情報を出力させる。例えば、出力部２２０は、並列分散処理制御装置１００から送信されたＣＰＵ設定画面２４０の出力情報を用いて、ＣＰＵ設定画面２４０を出力装置に表示させる。また例えば、出力部２２０は、並列分散処理制御装置１００から送信された出力情報を用いて、最終結果表示画面２５０を出力装置に表示させる。通信部２３０は、並列分散処理制御装置１００との間で情報を送信及び受信する。
【００３４】
サーバ装置３００は、制御部３１０と、通信部３２０とを備える。制御部３１０は、サーバ装置３００全体を統括的に制御する。通信部３２０は、並列分散処理制御装置１００との間で情報を送信及び受信する。制御部３１０は、シミュレーション実行部３１１を備える。シミュレーション実行部３１１は、サーバ装置３００の有するＣＰＵを用いて、シミュレーションを行う。一例として、シミュレーション実行部３１１は、並列分散処理制御装置１００からマスターデータを取得し、マスターデータを用いてシミュレーションを実行する。
【００３５】
並列分散処理制御システム１は、システム全体で複数のＣＰＵを有し、ＣＰＵ割り付け部１１２１により割り付けられた分割モデルを構成する各工程について、各ＣＰＵがシミュレーションを実行する。以下、サーバ装置３００がシミュレーションを実行する複数のＣＰＵを有しており、並列分散処理制御装置１００のエンジン実行部１１２２が、サーバ装置３００にシミュレーション開始指示を示す信号を送信する例を用いて説明する。その場合、サーバ装置３００の有する各ＣＰＵに対し、シミュレーション実行部３１１がシミュレーションを実行させる。
【００３６】
なお、装置構成はこれに限られず、例えば並列分散処理制御装置１００の有するＣＰＵと、サーバ装置３００の有するＣＰＵとでシミュレーションを実行してもよい。その場合、実行制御部１１３が用いるＣＰＵを確保するために、エンジン実行部は、（並列分散処理制御システム１の有する総ＣＰＵ数−１）のＣＰＵにシミュレーションを実行させることが望ましい。
【００３７】
図２は、並列分散処理制御装置１００のハードウェア構成の一例を示す図である。並列分散処理制御装置１００は、入力装置１６１と、出力装置１６２と、外部記憶装置１６３と、演算装置１６４と、主記憶装置１６５と、通信装置１６６と、を備え、各構成要素はバス１６７により接続されている。
【００３８】
入力装置１６１は、ユーザからの入力操作を受け付ける装置であり、例えばタッチパネル、キーボード、マウス、マイク等である。出力装置１６２は、並列分散処理制御装置１００に格納されたデータの出力処理を行う装置であって、例えばＬＣＤ（Liquid Crystal Display）等の表示装置、又はプリンタ等である。入力部１３０は入力装置１６１を用いることができ、出力部１４０は出力装置１６２を用いることができる。
【００３９】
外部記憶装置１６３は、例えばＨＤＤ（Hard Disk Drive）等の書き込み及び読み出し可能な記憶メディアである。演算装置１６４は、ＣＰＵ等の中央演算装置であって、主記憶装置１６５又は外部記憶装置１６３に記録されたプログラムに従って処理を実行する。制御部１１０を構成する各処理部は、演算装置１６４がプログラムを実行することにより各々の機能を実現する。なお、図２には、便宜上１つの演算装置１６４が示されているが、ＣＰＵ数はこれに限定されない。
【００４０】
主記憶装置１６５は、ＲＡＭ（Random Access Memory）等の記憶装置であり、プログラムやデータが一時的に読み出される記憶エリアとして機能する。通信装置１６６は、並列分散処理制御装置１００をネットワーク５０に接続するための装置であって、例えばＮＩＣ（Network Interface Card）等の通信デバイスである。
【００４１】
記憶部１２０は、主記憶装置１６５又は外部記憶装置１６３によりその機能が実現される。また、記憶部１２０は、ネットワーク５０上の記憶装置によってその機能が実現されてもよい。
【００４２】
なお、並列分散処理制御装置１００の各構成要素の処理は、１つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。また、並列分散処理制御装置１００の各構成要素の処理は、１つのプログラムで実現されてもよいし、複数のプログラムで実現されてもよい。
【００４３】
ユーザ端末装置２００及びサーバ装置３００は、並列分散処理制御装置１００と同様のハードウェア構成を有する。そのため、ユーザ端末装置２００及びサーバ装置３００のハードウェア構成については、説明を省略する。なお、先述したように、本実施形態におけるサーバ装置３００は、複数のＣＰＵを有している。
【００４４】
図３は、サプライチェーン構成マスタ１０のデータ構造の一例を示す図である。サプライチェーン構成マスタ１０は、製品の生産物流プロセスを構成する複数の工程を含む工程情報であって、マスターデータとして初期モデル受付部１１１１により読み込まれる。サプライチェーン構成マスタ１０は、マスタ情報記憶部１２１に記憶される。
【００４５】
サプライチェーン構成マスタ１０は、企業名１０ａと、企業クラス１０ｂと、品目１０ｃと、仕入先企業１０ｄと、納入先企業１０ｅと、を有する。企業名１０ａは、サプライチェーンを構成する各企業を示す情報であり、例えば生産物流プロセスにおいて製品の供給元となる企業の名称又は識別情報である。企業クラス１０ｂは、企業の種別を示す情報である。品目１０ｃは、企業の取り扱う製品の品目である。即ち、サプライチェーン構成マスタ１０には、生産物流プロセスを実行する各企業と製品の品目とを含む工程が含まれている。
【００４６】
仕入先企業１０ｄは、製品の仕入先となる企業を示す情報である。納入先企業１０ｅは、製品の納入先となる企業を示す情報である。
【００４７】
図４は、品目マスタ２０のデータ構造の一例を示す図である。品目マスタ２０は、品目名２０ａと、重量２０ｂと、体積２０ｃとを有する。品目マスタ２０は、マスタ情報記憶部１２１に記憶される。品目名２０ａは、製品の品目を示す情報である。重量２０ｂは、品目名２０ａにより特定される製品の重量を示す情報である。体積２０ｃは、品目名２０ａにより特定される製品の体積を示す情報である。
【００４８】
図５は、制約マスタ３０のデータ構造の一例を示す図である。制約マスタ３０は、サプライチェーン全体で考慮しなければならない制約を示すものであり、マスタ情報記憶部１２１に記憶される。制約マスタ３０は、企業３０ａと、制約項目３０ｂと、制約種別３０ｃと、制約値３０ｄと、優先制約フラグ３０ｅと、を有する。企業３０ａは、サプライチェーンを構成する各企業を示す情報である。制約項目３０ｂは、制約条件の項目を特定する情報である。制約種別３０ｃは、制約の種別を示す情報である。
【００４９】
制約値３０ｄは、制約条件となる値を示す情報である。優先制約フラグ３０ｅは、当該フラグを有するレコードにより特定される制約条件の影響を受けるか否かを示す情報であるが、詳細は後述する。例えば、優先制約フラグが「１」の場合は、優先制約フラグがあるものとして取り扱われ、制約条件の影響を受ける。「０」の場合は、優先制約フラグがないものとして取り扱われ、制約条件の影響を受けない。
【００５０】
なお、制約マスタ３０は、生産物流プロセスを実行する各企業と制約項目との組合せに応じて、制約値を記憶した情報といえる。
【００５１】
一例として、図５に示す制約マスタ３０のうち、上から１番目のレコードは、企業３０ａが「工場Ａ」であって、制約項目３０ｂが「生産量」であって、制約種別３０ｃが「上限」であって、制約値３０ｄが「１００個／日」であって、優先制約フラグ３０ｅが「１」である。これは、「工場Ａ」により生産される製品の「生産量」の「上限」が、「１日につき１００個」であって、シミュレーションを行うに当たり、当該制約条件の影響を受けることを示している。
【００５２】
図６は、ＢＯＭ（Bill of materials）マスタ４０のデータ構造の一例を示す図である。ＢＯＭマスタ４０は、マスタ情報記憶部１２１に記憶される。ＢＯＭマスタ４０は、親品目４０ａと、子品目４０ｂと、消費数量４０ｃとを有する。親品目４０ａは、製品の品目を示す情報である。子品目４０ｂは、親品目４０ａに係る製品を構成する他の品目を示す情報である。消費数量４０ｃは、親品目４０ａの製品を１単位生産するにあたり必要な子品目４０ｂの数を示す値である。即ち、図６に示す「品目Ａ」を１単位生産するにあたり、「品目α」が２単位、「品目β」が３単位必要となる。
【００５３】
図７は、本実施形態における分割モデル生成処理の一例を示すフローチャートである。本処理は、例えば並列分散処理制御装置１００において定期的に実行される。
【００５４】
まず、初期モデル受付部１１１１が、マスターデータを読み込む（ステップＳ１００）。具体的には、初期モデル受付部１１１１は、ユーザ端末装置２００から、サプライチェーン構成マスタ１０と、品目マスタ２０と、制約マスタ３０と、ＢＯＭマスタ４０とを読み込む。なお、初期モデル受付部１１１１は、ユーザ端末装置２００以外の装置からマスターデータを読み込んでもよい。
【００５５】
次に、分割モデル生成部１１１２は、品目クラスタを生成する（ステップＳ１０１）。分割モデル生成部１１１２は、サプライチェーン構成マスタ１０、品目マスタ２０、及びＢＯＭマスタ４０を基に、品目をグルーピングする。より具体的には、分割モデル生成部１１１２は、ＢＯＭマスタ４０を参照し、１つの親品目４０ａにつき１つのグループを生成する。次に、分割モデル生成部１１１２は、共通の子品目４０ｂを有する親品目４０ａについて、どちらか一方の親品目４０ａが属するグループに、他方の親品目４０ａ及び該親品目４０ａの製造に必要な子品目４０ｂを所属させる。
【００５６】
図８は、品目クラスタ情報１２２０のデータ構造の一例を示す図である。品目クラスタ情報１２２０は、クラスタ識別情報１２２０ａと、品目１２２０ｂと、を有する。クラスタ識別情報１２２０ａは、品目のグループを特定する識別情報である。品目１２２０ｂは、クラスタ識別情報１２２０ａにより特定されるグループに所属する品目を特定する情報である。
【００５７】
図６に示すＢＯＭマスタ４０を構成する品目のうち、「品目Ａ」、及び品目Ａを構成する「品目α」、「品目β」は、図８の品目クラスタ情報１２２０において、クラスタ識別情報１２２０ａが「Ｇ１」のグループに関連付けられている。図６のＢＯＭマスタ４０において、「品目θ」は、「品目Ｂ」の子品目でもあり、「品目Ｃ」の子品目でもある。そのため、図８に示す品目クラスタ情報１２２０では、「品目Ｂ」及び品目Ｂを構成する「品目γ」、「品目θ」、及び「品目Ｃ」が、クラスタ識別情報１２２０ａが「Ｇ２」のグループに関連付けられている。
【００５８】
説明を図７に戻す。次に、分割モデル生成部１１１２は、分割モデルを生成する（ステップＳ１０２）。具体的には、分割モデル生成部１１１２は、品目クラスタ情報１２２０を用いて、サプライチェーン構成マスタ１０に含まれる工程をグループ化することにより、分割モデル情報１２２１を生成する。
【００５９】
図９は、分割モデル情報１２２１のデータ構造の一例を示す図である。分割モデル情報１２２１は、分割モデル情報記憶部１２２に記憶される。分割モデル情報１２２１は、クラスタ識別情報１２２１ａと、企業名１２２１ｂと、企業クラス１２２１ｃと、品目１２２１ｄと、仕入先企業１２２１ｅと、納入先企業１２２１ｆと、を有する。
【００６０】
クラスタ識別情報１２２１ａは、工程の属するグループを特定する識別情報である。企業名１２２１ｂは、サプライチェーンを構成する各企業を示す情報である。企業クラス１２２１ｃは、企業の種別を示す情報である。品目１２２１ｄは、企業の取り扱う製品の品目である。仕入先企業１２２１ｅは、製品の仕入先となる企業を示す情報である。納入先企業１２２１ｆは、製品の納入先となる企業を示す情報である。
【００６１】
分割モデル生成部１１１２は、サプライチェーン構成マスタ１０の品目１０ｃを参照し、品目クラスタ情報１２２０において当該品目に対応するクラスタ識別情報１２２０ａを特定する。分割モデル生成部１１１２は、サプライチェーン構成マスタ１０に含まれる各レコードに、特定したクラスタ識別情報１２２０ａを関連付けることにより、分割モデル情報１２２１を生成する。即ち、分割モデル生成部１１１２は、サプライチェーン構成マスタ１０に含まれる各工程を、品目を用いてグループ化することにより、分割モデル情報１２２１を生成する。その後、制御部１１０は図７に示すフローチャートの処理を終了する。
【００６２】
図１０は、ＣＰＵ情報生成処理の一例を示すフローチャートである。本フローチャートの処理は、例えばユーザ端末装置２００において、ＣＰＵ情報生成処理の開始指示の入力操作を受け付けると開始される。
【００６３】
まず、出力情報生成部１１３３は、ＣＰＵ設定画面２４０の表示情報を生成する（ステップＳ２００）。その後、出力情報生成部１１３３の生成した表示情報は、ＣＰＵ情報生成処理の開始指示の入力操作を受け付けたユーザ端末装置２００に送信され、表示される。
【００６４】
図１９は、ＣＰＵ設定画面２４０の一例を示す図である。ＣＰＵ設定画面２４０は、ＣＰＵ数入力領域２４１と、設定指示受付ボタン２４２とを有する。ＣＰＵ数入力領域２４１は、シミュレーションに用いるＣＰＵの数の入力を受け付ける領域である。設定指示受付ボタン２４２は、ＣＰＵ数入力領域２４１に入力されたＣＰＵ数を確定させるためのボタンである。ＣＰＵ数入力領域２４１に数値が入力され、設定指示受付ボタン２４２が設定指示を受け付けると、入力されたＣＰＵ数が並列分散処理制御装置１００に送信され、入力された数のＣＰＵに対し、ＣＰＵ割り付け部１１２１により分割モデルが割り付けられる。
【００６５】
説明を図１０に戻す。次に、分割モデル生成部１１１２は、ＣＰＵ情報１２２２を生成する（ステップＳ２０１）。その後、制御部１１０は本フローチャートの処理を終了する。
【００６６】
なお、ＣＰＵ情報１２２２は、シミュレーションの実行に用いるＣＰＵを特定できればよく、ＣＰＵ情報生成処理は本フローチャートに示す例に限定されない。例えば、ＣＰＵ設定画面２４０は、ＣＰＵ数入力領域２４１の代わりに、サーバ台数入力領域（図示せず）を有していてもよい。サーバ台数入力領域は、シミュレーションを実行するサーバ装置３００の台数の入力を受け付ける領域である。その場合、並列分散処理制御装置１００は、入力されたサーバ装置３００の台数に応じて、シミュレーションに用いるＣＰＵを特定可能であるよう、予めサーバ装置３００の台数とＣＰＵとが関連付けられた情報を有している。
【００６７】
また例えば、分割モデル生成部１１１２は、並列分散処理制御装置１００及びサーバ装置３００の搭載するＣＰＵから、実行制御部１１３が使用するものとして予め定められたＣＰＵを除いたＣＰＵを示す情報を用いて、ＣＰＵ情報１２２２を生成してもよい。その場合、分割モデル生成部１１１２は、ＣＰＵ情報１２２２の生成の開始指示がなくとも、例えば定期的にＣＰＵ情報１２２２を生成してもよい。
【００６８】
図１１は、ＣＰＵ情報１２２２のデータ構造の一例を示す図である。ＣＰＵ情報１２２２は、分割モデル情報記憶部１２２に記憶され、シミュレーションの実行に用いることのできるＣＰＵを特定する情報を有している。分割モデル生成部１１１２は、ＣＰＵ数入力領域２４１に入力された数のＣＰＵを、ＣＰＵ情報１２２２に登録する。
【００６９】
図１２は、計画立案処理の一例を示すフローチャートである。本フローチャートの処理では、図７に示す分割モデル生成処理により生成された分割モデル情報１２２１、及び図１０に示すＣＰＵ情報生成処理により生成されたＣＰＵ情報１２２２を使用する。そのため、本処理は分割モデル生成処理及びＣＰＵ情報生成処理の後に実行される。
【００７０】
まず、ＣＰＵ割り付け部１１２１は、各分割モデルをＣＰＵに割り付ける（ステップＳ３０１）。先述したように、ＣＰＵ割り付け部１１２１は、各ＣＰＵの処理負荷が平準化するよう、分割モデルを割り当てる。一例として、ＣＰＵ割り付け部１１２１は、品目クラスタ情報１２２０（図８）を参照し、各クラスタ識別情報１２２０ａと関連する品目１２２０ｂの数が多い順にクラスタ識別情報１２２０ａをソートする。ＣＰＵ割り付け部１１２１は、ＣＰＵ情報１２２２に含まれるＣＰＵに対し、品目数の多い順にクラスタ識別情報１２２０ａを割り当てる。その際、ＣＰＵ割り付け部１１２１は、既にＣＰＵに割り付けられた分割モデルの品目数を参照し、該品目数の少ないＣＰＵに対し、品目数の多いクラスタ識別情報１２２０ａを割り当てる。
【００７１】
なお、ＣＰＵ割り付け部１１２１の行う割り付け方法はこれに限定されない。例えば、品目数の少ない分割モデルから順にＣＰＵに割り付けてもよい。
【００７２】
図１３は、ＣＰＵ割り付け情報１２３０のデータ構造の一例を示す図である。ＣＰＵ割り付け情報１２３０は、日別結果情報記憶部１２３に記憶される。ＣＰＵ割り付け情報１２３０は、ＣＰＵ１２３０ａと、クラスタ識別情報１２３０ｂとを有する。ＣＰＵ１２３０ａは、ＣＰＵを特定する識別情報である。クラスタ識別情報１２３０ｂは、ＣＰＵ１２３０ａのＣＰＵに割り付けられた分割モデルのグループを特定する識別情報である。
【００７３】
説明を図１２に戻す。次に、計算実行部１１２及び実行制御部１１３は、計算期間の初日から終了日まで、ステップＳ３０２からステップＳ３０７までの処理を繰り返す。本処理より前に、並列分散処理制御装置１００は、計算期間の指定を受け付けている。以下、計算期間内の１日毎にシミュレーション結果を算出する実施形態について説明するが、シミュレーション結果の算出スパンについてはこれに限定されず、任意であってよい。
【００７４】
まず、エンジン実行部１１２２が、１日分の計算を実行し、各ＣＰＵの実行結果を集計する（ステップＳ３０３）。具体的には、エンジン実行部１１２２は、本処理開始前に指定された計算期間内の１日について、各ＣＰＵに計算処理を実行させる。エンジン実行部１１２２は、ＣＰＵ割り付け情報１２３０を参照して各ＣＰＵに割り付けられたクラスタ識別情報１２３０ｂを抽出する。エンジン実行部１１２２は、分割モデル情報１２２１を参照し、抽出したクラスタ識別情報１２２１ａにより特定されるレコード（工程）について、各ＣＰＵに計算結果となる値を算出させ、日別結果情報１２３１を生成する。
【００７５】
図１４は、日別結果情報１２３１のデータ構造の一例を示す図である。日別結果情報１２３１は、日別結果情報記憶部１２３に記憶され、計算時点１２３１ａと、ＣＰＵ１２３１ｂと、企業１２３１ｃと、品目１２３１ｄと、制約項目１２３１ｅと、結果日１２３１ｆと、結果１２３１ｇと、を有する。
【００７６】
計算時点１２３１ａは、計算を実行した日を示す情報である。ＣＰＵ１２３１ｂは、計算を行ったＣＰＵを特定する識別情報である。企業１２３１ｃは、サプライチェーンを構成する各企業を示す情報である。品目１２３１ｄは、企業１２３１ｃの取り扱う製品の品目を示す情報である。
【００７７】
制約項目１２３１ｅは、制約条件の項目を特定する情報である。結果日１２３１ｆは、計算の対象となる日を示す情報である。結果１２３１ｇは、エンジン実行部１１２２の制御により、企業１２３１ｃ及び品目１２３１ｄに係る工程についてＣＰＵが算出した、結果日１２３１ｆにおける値である。
【００７８】
例えば、図１４に示す日別結果情報１２３１の最上位のレコードは、計算時点１２３１ａが「２０１８／３／１」、ＣＰＵ１２３１ｂが「００１」、企業１２３１ｃが「工場Ａ」、品目１２３１ｄが「品目Ａ」、制約項目１２３１ｅが「生産量」、結果日１２３１ｆが「２０１８／３／１」、結果１２３１ｇが「１３０」である。これは、計算時点である「２０１８／３／１」に、「００１」の識別情報により特定されるＣＰＵが、「工場Ａ」において生産される「品目Ａ」の「２０１８／３／１」における「生産量」が、「１３０」単位であることを示している。
【００７９】
なお、エンジン実行部１１２２の制御により算出される値は、工程に対する実績値か、又は計画値である。計画時点と結果日が同じである場合、算出される値は生産物流プロセスにおいて実際に行ったと仮定される実績値である。結果日が計画時点よりも先である場合、算出される値は計画時点における結果日に対する計画値である。図１４の最上位のレコードでは、計算時点１２３１ａと結果日１２３１ｆとが共に「２０１８／３／１」であるため、結果１２３１ｇに係る値は実績値であるものと取り扱われる。
【００８０】
なお、図１４に示す日別結果情報１２３１の結果日１２３１ｆには、「２０１８／３／１」から「２０１８／３／３」までの日付が含まれている。即ち、本図の日別結果情報１２３１は、図１２に示すステップ３０２〜ステップＳ３０７の処理を日数分繰り返して生成される情報である。
【００８１】
説明を図１２のステップＳ３０３に戻す。エンジン実行部１１２２は、日別結果情報１２３１を生成した後、各ＣＰＵの実行結果を集計する。より具体的には、エンジン実行部１１２２は、企業と制約項目との組合せ毎に値を合算する。図１４を用いて説明すると、エンジン実行部１１２２は、企業１２３１ｃと、制約項目１２３１ｅと、結果日１２３１ｆとの組合せが共通するレコードを抽出する。エンジン実行部１１２２は、抽出したレコードの結果１２３１ｇを合算する。
【００８２】
図１４において、企業１２３１ｃが「工場Ａ」であって、制約項目１２３１ｅが「生産量」であって、結果日１２３１ｆが「２０１８／３／１」であるレコードは、最上位のレコード（品目１２３１ｄが「品目Ａ」であるレコード）と、下から３つ目のレコード（品目１２３１ｄが「品目Ｂ」であるレコード）とがある。これらのレコードに含まれる結果１２３１ｇを合算して、「２５０」の値を得る。
【００８３】
図１５は、制約違反情報１２３２のデータ構造の一例を示す図である。制約違反情報１２３２は、日別結果情報記憶部１２３に記憶され、企業１２３２ａと、制約項目１２３２ｂと、結果日１２３２ｃと、合計量１２３２ｄと、を含む。企業１２３２ａは、図１４の企業１２３１ｃと対応し、制約項目１２３２ｂは、図１４の制約項目１２３１ｅと対応し、結果日１２３２ｃは、結果日１２３１ｆと対応するため、説明を省略する。
【００８４】
合計量１２３２ｄは、日別結果情報１２３１を構成するレコードのうち、企業１２３１ｃと、制約項目１２３１ｅと、結果日１２３１ｆとの組合せが共通するレコードの結果１２３１ｇを合算して得られる値である。
【００８５】
図１５の制約違反情報１２３２では、企業１２３２ａが「工場Ａ」であって、制約項目１２３２ｂが「生産量」であって、結果日１２３２ｃが「２０１８／３／１」であるレコードについて、図１４において合算して得た値である「２５０」が、合計量１２３２ｄとして含まれている。なお、本レコードは、計算時点と結果日とが同じ工程、即ち実績値の合計量を示すレコードである。
【００８６】
説明を図１２に戻す。次に、制約監視部１１３１は、制約違反があるか否かを判定する（ステップＳ３０４）。具体的には、制約監視部１１３１は、ステップＳ３０３で算出された合計量と、制約マスタ３０に含まれる制約値とを比較することにより、制約値により定まる条件を満たすか否かを判定する。
【００８７】
より具体的に説明する。制約監視部１１３１は、制約違反情報１２３２（図１５）のレコードの１つを抽出し、当該レコードの合計量１２３２ｄが、実績値の合計量か、計画値の合計量かを判定する。
【００８８】
次に、制約監視部１１３１は、制約マスタ３０（図５）を参照し、抽出した制約違反情報１２３２のレコードに含まれる企業１２３２ａと制約項目１２３２ｂとの組合せを特定する。制約監視部１１３１は、企業３０ａと制約項目３０ｂとが一致する制約マスタ３０のレコードを特定する。次に、抽出した制約違反情報１２３２のレコードが実績値のレコードである場合、特定した制約マスタ３０のレコードに含まれる優先制約フラグ３０ｅを参照する。優先制約フラグ３０ｅが、制約条件の影響を受けない情報（図５の場合「０」）である場合、制約監視部１１３１は合計量１２３２ｄが制約値に係る条件を満たすものと判定し、処理を進める。
【００８９】
優先制約フラグ３０ｅが、制約条件の影響を受ける情報（図５の場合「１」）である場合、制約違反情報１２３２の合計量１２３２ｄが、制約マスタ３０の制約種別３０ｃ及び制約値３０ｄの条件を満たすか否かを判定する。
【００９０】
図１５の制約違反情報１２３２の最上位のレコードは、企業１２３２ａが「工場Ａ」であって、制約項目１２３２ｂが「生産量」である。先述した通り、当該レコードの合計量１２３２ｄは実績値であるため、制約条件の充足可否の判定において、優先制約フラグの内容を参照する。図５に示す制約マスタ３０の最上位のレコードは、企業３０ａが「工場Ａ」であって、制約項目３０ｂが「生産量」であり、制約違反情報１２３２の最上位のレコードと対応している。
【００９１】
図５の最上位のレコードの優先制約フラグ３０ｅは、制約条件の影響を受けることを示す「１」である。そのため、制約監視部１１３１は、合計量１２３２ｄの「２５０」が、制約マスタ３０における条件を満たすか否かを判定する。図５の最上位のレコードは、制約種別３０ｃが「上限」であって、制約値３０ｄが「１００個／日」であり、合計量の「２５０」が制約値の上限を超えているため、制約違反情報１２３２の当該レコードは条件を満たさないものと判定する。
【００９２】
なお、図１５の制約違反情報１２３２の２段目のレコードは、企業１２３２ａが「倉庫Ａ」であって、制約項目１２３２ｂが「出庫量」であって、結果日１２３２ｃが「２０１８／３／１」であって、合計量１２３２ｄが「４００」である。結果日と計算時点とが同じであるため、合計量は実績値として取り扱われる。
【００９３】
図１５の制約違反情報１２３２の２段目のレコードと、図５の制約マスタ３０の２段目のレコードとについて、企業３０ａ及び制約項目３０ｂの組合せが一致している。しかしながら、制約違反情報１２３２の合計量１２３２ｄが実績値であって、制約マスタ３０の２番目のレコードの優先制約フラグ３０ｅが「０」であるため、当該制約違反情報１２３２に係る工程は制約条件の影響を受けない。そのため、制約監視部１１３１は、制約違反情報１２３２の２番目のレコードについては、条件を満たすものと判定する。
【００９４】
なお、制約違反情報１２３２の合計量１２３２ｄが計画値である場合には、優先制約フラグ３０ｅの如何に関わらず、制約マスタ３０による条件を合計量１２３２ｄが満たすか否かの判定を行う。生産物流プロセスのシミュレーション上、実績値は実際に生産物流プロセスに供給されたものと取扱い、基本的に計画値を調整する方向でシミュレーションを行う。そのため、原則として実績値は制約条件の影響を受けないものと取り扱う。一方において、ある制約項目の実績値の調整ができない場合、他の制約項目との間でデッドロックが生じることがある。そのため、優先制約フラグを設け、実績値であっても制約条件の影響を受けるよう設定可能にすることで、より多様なニーズに対応した計画立案を実行することができる。
【００９５】
なお、合計量と制約値との比較を行うに際し、単位が異なる場合には一方の単位に換算して比較を行う。例えば、図１５に示す合計量１２３２ｄは、本例において製品の数であるが、図５に示す制約値３０ｄは体積を制約値とするものもある。その場合、品目マスタ２０（図４）を参照することにより合計量１２３２ｄに対応する体積を算出することで、制約値３０ｄとの比較を行う。
【００９６】
説明を図１２に戻す。ステップＳ３０４において、制約監視部１１３１は、ステップＳ３０３において生成した制約違反情報１２３２のすべてのレコードについて制約違反があるか否かを判定する。制約監視部１１３１は、制約違反情報１２３２のすべてのレコードについて制約違反がない場合に、制約違反がないものと判定する（ステップＳ３０４で「Ｎｏ」）。その場合、制御部１１０は処理をステップＳ３０３に戻し、予め指定された計画期間の他の日について、計算の実行を行う。
【００９７】
制約監視部１１３１が、制約違反情報１２３２のレコードのうち、制約違反のあるレコードが少なくとも１つあるものと判定する場合（ステップＳ３０４で「Ｙｅｓ」の場合）、再実行情報生成部１１３２は、計算結果を調整する（ステップＳ３０５）。本処理において、実行制御部１１３は、制約マスタ３０における制約値を遵守するために、制約違反情報１２３２に係る合計量をどれだけ調整しなければならないかを計算する。
【００９８】
一例として、再実行情報生成部１１３２は、ステップＳ３０４において制約違反と判定された制約違反情報１２３２のレコードを特定し、該レコードの合計量１２３２ｄを特定する。再実行情報生成部１１３２は、該レコードの生成に用いた日別結果情報１２３１のレコードを抽出し、抽出したレコードの結果１２３１ｇの、合計量に占める割合を算出する。
【００９９】
上述の例において、図１５に示す制約違反情報１２３２の最上位のレコードは、制約に違反するものと判定された。当該レコードの合計量１２３２ｄは「２５０」である。また、該レコードの生成に用いられた日別結果情報１２３１のレコードは、最上位のレコードと、下から３つ目のレコードである。最上位のレコードの結果１２３１ｇは「１３０」であるため、「２５０」に占める割合として「５２％」と算出される。同様に、下から３つ目のレコードについては、結果１２３１ｇの「１２０」の「２５０」に占める割合として、「４８％」と算出される。再実行情報生成部１１３２は、算出した数値を含む結果調整情報１２３３を生成する。
【０１００】
図１６は、結果調整情報１２３３のデータ構造の一例を示す図である。結果調整情報１２３３は、日別結果情報記憶部１２３に記憶され、企業１２３３ａと、制約項目１２３３ｂと、品目１２３３ｃと、結果日１２３３ｄと、調整レート１２３３ｅと、を有する。企業１２３３ａは、日別結果情報１２３１の企業１２３１ｃと対応し、制約項目１２３３ｂは、日別結果情報１２３１の制約項目１２３１ｅと対応し、品目１２３３ｃは、日別結果情報１２３１の品目１２３１ｄと対応し、結果日１２３３ｄは、日別結果情報１２３１の結果日１１２３１ｆと対応する。
【０１０１】
調整レート１２３３ｅは、制約違反と判定された制約違反情報１２３２の合計量１２３２ｄに占める、日別結果情報１２３１の結果１２３１ｇの割合を示す値である。即ち、再実行情報生成部１１３２は、制約違反と判定された制約違反情報１２３２を構成する日別結果情報１２３１に対し、調整レート１２３３ｅを関連付けることにより、結果調整情報１２３３を生成する。
【０１０２】
なお、結果調整情報１２３３は、制約違反であった工程について、制約値を満たす値が算出されるよう、各ＣＰＵに算出制限を課すための条件となる数値が含まれるものであればよく、その数値は調整レートに限定されない。例えば、制約値と合計量の差分に対する、日別結果情報１２３１の結果１２３１ｇの占める割合であってもよい。
【０１０３】
説明を図１２に戻す。次に、再実行情報生成部１１３２は、再実行情報１２４０を生成する（ステップＳ３０６）。
【０１０４】
図１７は、再実行情報１２４０のデータ構造の一例を示す図である。再実行情報１２４０は、再実行情報記憶部１２４に記憶され、ＣＰＵ１２４０ａと、再実行日１２４０ｂと、企業１２４０ｃと、品目１２４０ｄと、制約項目１２４０ｅと、結果日１２４０ｆと、目標値１２４０ｇと、を有する。
【０１０５】
ＣＰＵ１２４０ａは、再実行情報１２４０を構成する工程の値を算出するＣＰＵを特定する識別情報である。再実行日１２４０ｂは、ＣＰＵに工程の値を算出させる日である。企業１２４０ｃは、サプライチェーンを構成する各企業を示す情報である。品目１２４０ｄは、製品の品目を示す情報である。制約項目１２４０ｅは、制約条件の項目を特定する情報である。結果日１２４０ｆは、計算の対象となる日を示す情報である。目標値１２４０ｇは、ＣＰＵ１２４０ａに係るＣＰＵに工程の値を算出させる際の、値の目標値である。
【０１０６】
再実行情報生成部１１３２は、結果調整情報１２３３の企業１２３３ａと、制約項目１２３３ｂと、品目１２３３ｃと、結果日１２３３ｄとを関連付け、再実行情報１２４０のレコードを生成する。再実行情報生成部１１３２は、生成したレコードの品目１２４０ｄを用いて品目クラスタ情報１２２０を参照し、対応するクラスタ識別情報１２２０ａを特定する。また、再実行情報生成部１１３２は、ＣＰＵ割り付け情報１２３０を参照し、特定したクラスタ識別情報１２３０ｂと対応するＣＰＵ１２３０ａを特定して再実行情報１２４０のＣＰＵ１２４０ａとする。再実行情報１２４０の再実行日１２４０ｂは任意であるが、一例として、再実行情報１２４０を生成した日を再実行日とする。
【０１０７】
また、再実行情報生成部１１３２は、目標値を算出する。一例として、制約値に調整レートを乗じた値を目標値とする。より具体的には、再実行情報生成部１１３２は、結果調整情報１２３３のレコードのうち、企業１２３３ａ及び制約項目１２３３ｂの一致する制約マスタ３０のレコードを特定する。再実行情報生成部１１３２は、特定したレコードの制約値３０ｄに対し、結果調整情報１２３３の調整レート１２３３ｅを乗じて目標値を算出する。なお、必要に応じて単位の正規化を行う。
【０１０８】
なお、目標値は制約値を満たすための各工程の値である。そのため、目標値の算出方法は上述の例に限定されない。
【０１０９】
説明を図１２に戻す。次に、エンジン実行部１１２２は、再実行情報１２４０を用いて再計算を行う（ステップＳ３０７）。具体的には、エンジン実行部１１２２は、ステップＳ３０３と同様に、再実行情報１２４０を構成する工程について、各ＣＰＵに計算結果となる値を算出させる。その際、エンジン実行部１１２２は、各ＣＰＵに対し、目標値により特定される条件を満たすよう計算する旨指示する。各ＣＰＵが目標値を遵守するためのロジックは特に限定されない。例えば山崩しを行わずに山積みを行うようなヒューリスティックな方法を用いてもよいし、数理計画法等の最適化手法を適用してもよい。
【０１１０】
なお、ステップＳ３０６において、再実行情報１２４０の生成の際に、再実行日１２４０ｂについて、再実行情報１２４０を生成した日としていない場合には、本処理は割愛することができる。
【０１１１】
その後、エンジン実行部１１２２は、再計算の結果得られた値を用いて、日別結果情報１２３１の結果１２３１ｇを更新する
【０１１２】
予め指定された計画期間のすべての日程について、ステップＳ３０２からステップＳ３０７の処理が行われたら、出力情報生成部１１３３は、最終結果情報１２５０を生成する（ステップＳ３０８）。その後、制御部１１０は本フローチャートの処理を終了する。
【０１１３】
図１８は、最終結果情報１２５０のデータ構造の一例を示す図である。最終結果情報１２５０は、最終結果情報記憶部１２５に記憶され、企業１２５０ａと、品目１２５０ｂと、計算時点１２５０ｃと、結果項目１２５０ｄと、計画日１２５０ｅと、数量１２５０ｆと、を有する。企業１２５０ａは、製品の供給元の企業の名称又は識別情報である。品目１２５０ｂは、製品の品目を特定する識別情報である。
【０１１４】
計算時点１２５０ｃは、エンジン実行部１１２２が各ＣＰＵに計算を実行させた日を示す情報である。結果項目１２５０ｄは、計算結果の項目を示す情報であって、先述の制約項目に対応する。計画日１２５０ｅは、計算の対象となる日を示す情報である。
【０１１５】
数量１２５０ｆは、計算時点１２５０ｃに係る日に計算された値であって、企業１２５０ａに係る企業が、品目１２５０ｂに示す製品を、計画日１２５０ｅに係る日に、制約項目１２４０ｅに示す供給方法で生産物流プロセスに供給される製品の供給予測量を示す値である。
【０１１６】
本実施形態において、出力情報生成部１１３３は、日別結果情報１２３１を用いて最終結果情報１２５０を生成する。具体的には、再実行情報生成部１１３２は、日別結果情報１２３１の企業１２３１ｃを企業１２５０ａとし、品目１２３１ｄを品目１２５０ｂとし、計算時点１２３１ａを計算時点１２５０ｃとし、制約項目１２３１ｅを結果項目１２５０ｄとし、結果日１２３１ｆを計画日１２５０ｅとし、結果１２３１ｇを数量１２５０ｆとして関連付けることにより、最終結果情報１２５０を生成する。
【０１１７】
なお、最終結果情報１２５０は、その後ユーザ端末装置２００に送信され、ディスプレイ等に表示されてもよいし、並列分散処理制御装置１００の有するディスプレイ等に表示されてもよい。また、出力情報生成部１１３３は、最終結果情報１２５０を用いて最終結果表示画面２５０の出力情報を生成する。最終結果表示画面２５０は、ユーザ端末装置２００において表示されてもよく、並列分散処理制御装置１００において表示されてもよい。
【０１１８】
図２０は、最終結果表示画面２５０の一例を示す図である。最終結果表示画面２５０は、企業選択領域２５１と、品目選択領域２５２と、結果項目選択領域２５３と、結果表示領域２５４と、を有する。企業選択領域２５１は、最終結果情報１２５０内の企業１２５０ａに係る企業を選択可能に表示する領域である。品目選択領域２５２は、最終結果情報１２５０の品目１２５０ｂに係る製品を選択可能に表示する領域である。結果項目選択領域２５３は、最終結果情報１２５０の結果項目１２５０ｄを選択可能に表示する領域である。
【０１１９】
結果表示領域２５４は、最終結果情報１２５０に含まれる数量１２５０ｆを表示する領域である。最終結果情報１２５０において、企業１２５０ａ、品目１２５０ｂ、及び結果項目１２５０ｄが共通する複数のレコードについて、異なる計画日１２５０ｅに対し数量１２５０ｆが関連付けられている。出力情報生成部１１３３は、計画日の推移に応じて数量を表示する結果表示領域２５４の出力情報を生成する。
【０１２０】
なお、図２０の結果項目選択領域２５３において、「在庫推移」、「生産計画」、「供給計画」、「調達計画」、及び「販売計画」と記載されたタブが選択可能に示されている。「在庫推移」とは、結果項目１２５０ｄが「在庫量」である数量１２５０ｆの推移を示すものである。「生産計画」とは、結果項目１２５０ｄが「生産量」である数量１２５０ｆの推移を示すものである。「供給計画」とは、結果項目１２５０ｄが「供給量」である数量１２５０ｆの推移を示すものである。「調達計画」とは、結果項目１２５０ｄが「調達量」である数量１２５０ｆの推移を示すものである。「販売計画」とは、結果項目１２５０ｄが「販売量」である数量１２５０ｆの推移を示すものである。なお、結果項目選択領域２５３の表示形式等については、図２０に示す例に限定されない。
【０１２１】
以上、本実施形態では、生産物流プロセスにおける計算モデルを適切に分割し、各ＣＰＵに処理負荷が平準化するよう割り当てて計算させるため、並列処理による計算の高速化を実現することができる。また、各モデル間に存在する制約を考慮することができるため、例え計算モデルを分割して計算を行っても、生産物流計画の効率的な立案を阻害しない。
【０１２２】
また、計算モデルを分割する場合、各計算モデルに依存関係が生じることがある。本実施形態では、品目に応じて計算モデルを分割することにより、計算モデルの依存関係を低減させ、計算速度の向上を図ることが可能となる。また、並列分散処理により計算速度の向上を実現しつつ、計算モデル全体の制約を考慮した結果を算出することができる。従って、本実施形態によれば、より効率的な生産物流計画の立案を支援することができる。
【０１２３】
以上、本発明に係る各実施形態及び変形例の説明を行ってきたが、本発明は、上記した実施形態の一例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態の一例は、本発明を分かり易くするために詳細に説明したものであり、本発明は、ここで説明した全ての構成を備えるものに限定されない。また、ある実施形態の一例の構成の一部を他の一例の構成に置き換えることが可能である。また、ある実施形態の一例の構成に他の一例の構成を加えることも可能である。また、各実施形態の一例の構成の一部について、他の構成の追加・削除・置換をすることもできる。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、図中の制御線や情報線は、説明上必要と考えられるものを示しており、全てを示しているとは限らない。ほとんど全ての構成が相互に接続されていると考えてもよい。
【０１２４】
また、上記の並列分散処理制御装置１００、ユーザ端末装置２００、及びサーバ装置３００の機能構成は、理解を容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。上述に示す通り、並列分散処理制御装置１００、ユーザ端末装置２００、及びサーバ装置３００は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、１つの構成要素がさらに多くの処理を実行するように分類することもできる。
【符号の説明】
【０１２５】
１：並列分散処理制御システム、１０：サプライチェーン構成マスタ、２０：品目マスタ、３０：制約マスタ、４０：ＢＯＭマスタ、５０：ネットワーク、１００：並列分散処理制御装置、１１０・３１０：制御部、１１１：モデル分割部、１１２：計算実行部、１１３：実行制御部、１２０：記憶部、１２１：マスタ情報記憶部、１２２：分割モデル情報記憶部、１２３：日別結果情報記憶部、１２４：再実行情報記憶部、１２５：最終結果情報記憶部、１３０・２１０：入力部、１４０・２２０：出力部、１５０・２３０・３２０：通信部、１６１：入力装置、１６２：出力装置、１６３：外部記憶装置、１６４：演算装置、１６５：主記憶装置、１６６：通信装置、２００：ユーザ端末装置、２４０：ＣＰＵ設定画面、２４１：ＣＰＵ数入力領域、２４２：設定指示受付ボタン、２５０：最終結果表示画面、２５１：企業選択領域、２５２：品目選択領域、２５３：結果項目選択領域、２５４：結果表示領域、３００：サーバ装置、３１１：シミュレーション実行部、１１１１：初期モデル受付部、１１１２：分割モデル生成部、１１２１：ＣＰＵ割り付け部、１１２２：エンジン実行部、１１３１：制約監視部、１１３２：再実行情報生成部、１１３３：出力情報生成部、１２２０：品目クラスタ情報、１２２１：分割モデル情報、１２２２：ＣＰＵ情報、１２３０：ＣＰＵ割り付け情報、１２３１：日別結果情報、１２３２：制約違反情報、１２３３：結果調整情報、１２４０：再実行情報、１２５０：最終結果情報
【図１】
2020042623.tif 000003
【図２】
2020042623.tif 000004
【図３】
2020042623.tif 000005
【図４】
2020042623.tif 000006
【図５】
2020042623.tif 000007
【図６】
2020042623.tif 000008
【図７】
2020042623.tif 000009
【図８】
2020042623.tif 000010
【図９】
2020042623.tif 000011
【図１０】
2020042623.tif 000012
【図１１】
2020042623.tif 000013
【図１２】
2020042623.tif 000014
【図１３】
2020042623.tif 000015
【図１４】
2020042623.tif 000016
【図１５】
2020042623.tif 000017
【図１６】
2020042623.tif 000018
【図１７】
2020042623.tif 000019
【図１８】
2020042623.tif 000020
【図１９】
2020042623.tif 000021
【図２０】
2020042623.tif 000022