(57)【要約】【課題】モデリングの手間を低減する。【解決手段】演算装置は、第１階層の待ち行列の状態を取得する第１取得部と、第２階層の待ち行列の状態を取得する第２取得部と、前記第１取得部が取得した前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第２取得部が取得した前記第２階層の待ち行列の状態を更新する第１更新部と、前記第１更新部が更新した前記第２階層の待ち行列の状態に基づいて、前記第１階層の待ち行列の状態を更新する第２更新部と、を備える。【選択図】図７
2015118450.tif 000002
【特許請求の範囲】
【請求項１】
第１階層の待ち行列の状態を取得する第１取得部と、
第２階層の待ち行列の状態を取得する第２取得部と、
前記第１取得部が取得した前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第２取得部が取得した前記第２階層の待ち行列の状態を更新する第１更新部と、
前記第１更新部が更新した前記第２階層の待ち行列の状態に基づいて、前記第１階層の待ち行列の状態を更新する第２更新部と、
を備えることを特徴とする演算装置。
【請求項２】
前記第２階層には、複数の待ち行列が含まれ、
前記第２取得部は、
前記複数の待ち行列の状態をそれぞれ取得し、
前記第１更新部は、
前記第１取得部が取得した前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第２取得部がそれぞれ取得した前記複数の待ち行列の状態をそれぞれ更新し、
前記第２更新部は、
前記第１更新部がそれぞれ更新した前記複数の待ち行列の状態に基づいて、前記第１階層の待ち行列の状態を更新する
ことを特徴とする請求項１に記載の演算装置。
【請求項３】
解析対象の移動経路と前記移動経路の所要時間とを示す情報を含む具象化モデルの状態を取得するモデル状態取得部と、
前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記モデル状態取得部が取得した前記具象化モデルの状態を更新するモデル状態更新部と、
を備え、
前記第２更新部は、
さらに前記モデル状態更新部が更新した前記具象化モデルの状態に基づいて、前記第１階層の待ち行列の状態を更新する
ことを特徴とする請求項１または請求項２に記載の演算装置。
【請求項４】
第３階層の待ち行列の状態を取得する第３取得部と、
前記第２取得部が取得した前記第２階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第３取得部が取得した前記第３階層の待ち行列の状態を更新する第３更新部と、
前記第３更新部が更新した前記第３階層の待ち行列の状態に基づいて、前記第２階層の待ち行列の状態を更新する第４更新部と、
を備えることを特徴とする請求項１から請求項３のいずれか一項に記載の演算装置。
【請求項５】
前記第４更新部は、
さらに前記第１更新部が更新した前記第１階層の待ち行列の状態に基づいて、前記第２階層の待ち行列の状態を更新する
ことを特徴とする請求項４に記載の演算装置。
【請求項６】
演算装置が備えるコンピュータに、
第１階層の待ち行列の状態を取得する第１取得ステップと、
第２階層の待ち行列の状態を取得する第２取得ステップと、
前記第１取得ステップにおいて取得された前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第２取得ステップにおいて取得された前記第２階層の待ち行列の状態を更新する第１更新ステップと、
前記第１更新ステップにおいて更新された前記第２階層の待ち行列の状態に基づいて、前記第１階層の待ち行列の状態を更新する第２更新ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置、およびそのプログラムに関する。
【背景技術】
【０００２】
近年、待ち行列理論に基づいたモデルを用いてシミュレーションを行う演算装置が提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０６−３１４１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１記載のような演算装置では、大規模なシミュレーション解析対象をモデリングする場合、モデルが大規模になる場合があり、この場合には、モデリングの手間がかかり、モデリングの手間を低減することができない場合があるという問題があった。本発明は上記の点に鑑みてなされたものであり、モデリングの手間を低減することができる演算装置、およびそのプログラムを提供する。
【課題を解決するための手段】
【０００５】
本発明の一態様は、第１階層の待ち行列の状態を取得する第１取得部と、第２階層の待ち行列の状態を取得する第２取得部と、前記第１取得部が取得した前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第２取得部が取得した前記第２階層の待ち行列の状態を更新する第１更新部と、前記第１更新部が更新した前記第２階層の待ち行列の状態に基づいて、前記第１階層の待ち行列の状態を更新する第２更新部と、を備えることを特徴とする演算装置である。
【０００６】
また、本発明の一態様の演算装置において、前記第２階層には、複数の待ち行列が含まれ、前記第２取得部は、前記複数の待ち行列の状態をそれぞれ取得し、前記第１更新部は、前記第１取得部が取得した前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第２取得部がそれぞれ取得した前記複数の待ち行列の状態をそれぞれ更新し、前記第２更新部は、前記第１更新部がそれぞれ更新した前記複数の待ち行列の状態に基づいて、前記第１階層の待ち行列の状態を更新することを特徴とする。
【０００７】
また、本発明の一態様の演算装置は、解析対象の移動経路と前記移動経路の所要時間とを示す情報を含む具象化モデルの状態を取得するモデル状態取得部と、前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記モデル状態取得部が取得した前記具象化モデルの状態を更新するモデル状態更新部とを備え、前記第２更新部は、さらに、前記モデル状態更新部が更新した前記具象化モデルの状態に基づいて、前記第１階層の待ち行列の状態を更新することを特徴とする。
【０００８】
また、本発明の一態様の演算装置は、第３階層の待ち行列の状態を取得する第３取得部と、前記第２取得部が取得した前記第２階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第３取得部が取得した前記第３階層の待ち行列の状態を更新する第３更新部と、前記第３更新部が更新した前記第３階層の待ち行列の状態に基づいて、前記第２階層の待ち行列の状態を更新する第４更新部と、を備えることを特徴とする。
【０００９】
また、本発明の一態様の演算装置は、前記第４更新部は、さらに前記第１更新部が更新した前記第１階層の待ち行列の状態に基づいて、前記第２階層の待ち行列の状態を更新することを特徴とする。
【００１０】
また、本発明の一態様は、演算装置が備えるコンピュータに、第１階層の待ち行列の状態を取得する第１取得ステップと、第２階層の待ち行列の状態を取得する第２取得ステップと、前記第１取得ステップにおいて取得された前記第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、前記第２取得ステップにおいて取得された前記第２階層の待ち行列の状態を更新する第１更新ステップと、前記第１更新ステップにおいて更新された前記第２階層の待ち行列の状態に基づいて、前記第１階層の待ち行列の状態を更新する第２更新ステップと、を実行させるためのプログラムである。
【発明の効果】
【００１１】
本発明によれば、モデリングの手間を低減することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係る演算装置の外観の一例を示す概略図である。
【図２】本実施形態の演算装置が取り扱う注文待ち行列モデルの一例を示す模式図である。
【図３】本実施形態の演算装置が取り扱う調理待ち行列モデルの一例を示す模式図である。
【図４】本実施形態の演算装置が取り扱う投入待ち待ち行列モデルの一例を示す模式図である。
【図５】本実施形態の演算装置が取り扱う調理場モデルの一例を示す模式図である。
【図６】本実施形態の演算装置が取り扱う階層化された計算モデルの一例を示す模式図である。
【図７】本実施形態の演算装置の構成の一例を示す構成図である。
【図８】本実施形態の演算装置の動作の一例を示すフローチャートである。
【図９】本実施形態の演算装置の構成の変形例を示す構成図である。
【図１０】計算モデルの基本計算部の一例を示す模式図である。
【図１１】基本計算部がネットワーク化された状態の一例を示す模式図である。
【図１２】基本計算部が階層化された状態の一例を示す模式図である。
【図１３】具象計算モデルを有する基本計算部の一例を示す模式図である。
【発明を実施するための形態】
【００１３】
［実施形態］
以下、図面を参照して、本発明に係る演算装置の一実施形態について説明する。
図１は、本発明の実施形態に係る演算装置１の外観の一例を示す概略図である。この演算装置１とは、例えば、計算モデルを用いた解析を実行することができるパーソナルコンピュータである。なお、以下の説明において、演算装置１が実行する計算モデルを用いた解析を、シミュレーションとも記載する。
【００１４】
ここで、計算モデルとは、ある現象の振る舞いをコンピュータによる計算が可能なように抽象化して表現したものである。この計算モデルには、抽象化された計算モデルや具象化モデルなどが含まれる。抽象化された計算モデルには、待ち行列モデルが含まれる。この待ち行列モデルとは、顧客がサービスを受けるために行列に並ぶ場合のように、確率的に挙動するシステムの混雑現象を解析するための計算モデルである。換言すれば、待ち行列モデルとは、資源に対する利用要求を抽象化した計算モデルである。また、ここでいう具象化モデルとは、解析対象の移動経路とこの移動経路の所要時間とを示す情報を含むモデルである。すなわち、具象化モデルとは、資源に対する利用要求を表す計算モデルのうち、解析対象の動的に変動する位置関係を表現可能な計算モデルである。これら待ち行列モデルおよび具象化モデルの具体例については、後述する。
【００１５】
次に、演算装置１の構成について説明する。この演算装置１は、表示部１０と本体２０とを備えている。
表示部１０は、液晶ディスプレイなどの表示面ＤＳを備えており、本体２０が出力する画像データに基づく画像を表示する。この画像データには、計算モデルの解析結果が含まれている。
【００１６】
本体２０は、不揮発性メモリーカードなどの記憶媒体３を挿入するスロットＳＬを備えている。この記憶媒体３には、例えば、ある解析対象のシステムを計算モデル化した計算モデル情報が記憶されている。この計算モデル情報が記憶されている記憶媒体３を本体２０のスロットＳＬに差し込むと、本体２０は、記憶媒体３から計算モデル情報を読み出して、後述する記憶部２００に書き込む。このようにして、演算装置１は、解析対象の計算モデル情報を取得する。
【００１７】
なお、記憶媒体３を介して解析対象の計算モデル情報を取得する構成は一例であって、演算装置１は、記憶媒体３以外の媒体を介して計算モデル情報を取得してもよい。例えば、演算装置１は、有線または無線によって外部の装置から供給される計算モデル情報を取得してもよい。
【００１８】
この本体２０は、ユーザが操作するためのキーボードＫＢやタッチパッドＴＰを備えている。また、本体２０は、その内部に演算処理を行う中央演算処理装置（ＣＰＵ；Central  Processing  Unit）などからなる演算部１００を備えている。本体２０は、キーボードＫＢやタッチパッドＴＰに入力されたユーザの操作に基づいて、演算部１００が種々の演算を行うことにより、入力された計算モデル情報の解析をおこなう。また、本体２０は、この計算モデル情報の解析結果に基づいて、画像データを生成し、生成した画像データを表示部１０に出力する。ユーザは、表示面ＤＳを見ることによって、入力された計算モデル情報の解析結果を確認することができる。この演算装置１の構成の詳細については、後述する。
【００１９】
この演算装置１が行うシミュレーションは、例えば、製品組み立て工場の工程設計や、商品を販売するサプライチェーンの設計など、様々な用途に用いられる。本実施形態においては、飲食店（例えば、ハンバーガーなどを商品として販売するファストフード店）において、注文の受け付けから商品の引き渡しまでの業務効率を改善するためのシミュレーションを一例にして説明する。この店舗の業務効率は、客が並ぶ窓口の数、厨房内の調理器の数、調理器の調理所要時間、バックヤードや冷蔵庫の配置と担当者の動線、窓口担当者の数、調理人の数、等のパラメータによって変化する。このシミュレーションにおいては、これらのパラメータを用いた待ち行列モデルおよび具象化モデルによって店舗の業務システムを表現する。この計算モデルを用いてシミュレーションすることにより、様々な課題を解決することができる。例えば、客の待ち時間を所定時間以下にするという課題が与えられている場合、上述の各パラメータを種々設定した計算モデルを用いてシミュレーションを行う。このシミュレーションの結果に基づいて、各パラメータをどのように設定すれば目標の達成が可能になるのかを判定することができる。ここで、例えば、適切な厨房内の調理器の数を求めるという課題が与えられた場合に、厨房内の調理器の数を変更するなどの実店舗での実験を行うことが困難である場合がある。このような場合においても、このシミュレーションによれば、実店舗での実験を行うことなく、厨房内の調理器の適切な数を求めることができる。
【００２０】
このシミュレーションにおいては、各パラメータの適切な値を求めるために、実店舗において発生している現象を計算モデル化する。ここで、店舗全体の業務効率を求めるための計算モデルは、比較的大規模になることがある。このように大規模な計算モデルを作成する手順には、ボトムアップ型のモデリング手順と、トップダウン型のモデリング手順とがある。ボトムアップ型のモデリング手順とは、比較的小規模な計算モデルを組み合わせて大規模な計算モデルを作成するモデリング手順である。また、トップダウン型のモデリング手順とは、モデリング対象の全体の計算モデルを大まかに作成し、シミュレーションの必要性に応じて計算モデルの一部を詳細化するモデリング手順である。この演算装置１は、トップダウン型のモデリング手順を提供する。ボトムアップ型のモデリング手順によると、小規模な計算モデルをすべて組み合わせるまで全体の結果が得られないことがあるが、トップダウン型のモデリング手順によれば、全体のおおまかな結果を得つつ、詳細化が必要な部分についての結果をも得ることができる。すなわち、演算装置１によれば、全体のおおまかな結果を得るまでの時間を短縮することができる。また、演算装置１によれば、詳細な結果が必要な部分については、より詳細化した計算モデルを作成することができる。
【００２１】
このトップダウン型のモデリング手順を実現するために、演算装置１は、次に示す機能を提供する。すなわち、演算装置１は、（１）抽象化された計算モデル（例えば、待ち行列モデル）と具象化モデルどちらも定義できる枠組み、（２）枠組み同士をネットワーク化する仕組み、および（３）ネットワーク化された枠組みが更に別の枠組み内に定義できる仕組みを提供する。ここで、実店舗おいて発生している現象を計算モデル化する場合に、抽象度を高めた計算モデルを作成することが困難な場合がある。例えば、人の動線に基づく解析など、解析対象の位置が動的に変動する場合には、待ち行列モデルなどの抽象化された計算モデル化することが困難な場合がある。この演算装置１は、上述の（１）に示すように、具象化モデルをシミュレーションする仕組みを提供する。この仕組みにより、抽象化された計算モデルを作成することが困難である場合には、具象化モデルを作成することができる。
【００２２】
また、この演算装置１は、上述の（２）（３）に示すように、計算モデルどうしのネットワーク化と階層化とを可能にする仕組みを提供する。この仕組みにより、必要な部分のみ詳細化（または、ドリルダウン）することができるため、計算モデルの作成コストおよび時間と精度とをトレードオフすることができる。
【００２３】
上述したように、演算装置１は、抽象化された計算モデルと、具象化モデルとを統一的に扱える枠組みを提供する。具体的には、演算装置１は、抽象化された計算モデルの中で処理時間を、固定値、関数や数式モデル、または具象化モデルのシミュレーション結果のいずれかとして扱う。このようにして演算装置１は、抽象化された計算モデルの中に、具象化モデルを取り込むことを可能にする。
【００２４】
また、上述したように、演算装置１は、計算モデルどうしのネットワーク化と階層化とを可能にする仕組みを提供する。具体的には、演算装置１は、入力用イベントと対応する出力と、この出力を組み合わせて再イベント化する変換機を使ってネットワーク化する。また、演算装置１は、ネットワークが、再帰的に枠組みの中にできるようにイベントをサブイベントに変換する変換機と出力を上位出力に変換する変換機を用いる。
【００２５】
ここで、イベントとは、「特定の時刻において、その計算モデルに影響を与える事象の変化」である。入力用イベントとは、演算対象の計算モデルに対して外部から「特定の時刻において何らかの影響を与える事象の変化」である。また、入力用イベントと対応する出力とは、入力用イベントに基づいて計算モデルによる演算の結果、出力される完了通知などである。また、再イベント化とは、出力（完了通知）が次に入力される計算モデルに入力可能な形式に変換することである。また、サブイベントとは、ある階層にある計算モデルに入力されたイベントに対して、１階層または複数階層の、下位階層の計算モデルが受け付けるイベントである。
【００２６】
以下、まず、図２から図６を参照して計算モデルの具体例を説明する。次に、上述の仕組みを提供するための、演算装置１の構成について説明する。
【００２７】
図２は、本実施形態の演算装置１が取り扱う注文待ち行列モデルの一例を示す模式図である。この注文待ち行列モデルは、客ＣＳの到着数と、客ＣＳが並ぶ窓口ＣＤの数と、客ＣＳの注文ＯＲから商品ＩＴの提供までの時間とを表現している。具体的には、この注文待ち行列モデルは、注文ＯＲ待ち行列に３人の客ＣＳが並んでいる状態を注文待ちキューＱＯｒによって表現している。また、この注文待ち行列モデルは、この店舗には客ＣＳが並ぶ窓口ＣＤが３つあることを表現している。各窓口ＣＤには店舗の窓口担当者ＴＬが配置されている。この窓口担当者ＴＬは、客ＣＳの注文ＯＲを受け取り、注文ＯＲに従った商品ＩＴを客ＣＳに渡す。この一例においては、客ＣＳの注文ＯＲとは、ハンバーガーとサラダとの注文ＯＲである。客ＣＳは所定の分布（例えば、ポアソン分布）に基づく確率によって注文ＯＲ待ち行列に到着する。注文ＯＲ待ち行列にいる客ＣＳは、窓口ＣＤが空いていれば、その空いている窓口ＣＤに移動して注文ＯＲを行う。また、窓口ＣＤが空いていない場合には、窓口ＣＤが空くまで注文ＯＲ待ち行列で待つ。窓口ＣＤにいる客ＣＳは、注文ＯＲした商品ＩＴを受け取ると窓口ＣＤから退出する。次に、図３を参照して、演算装置１が取り扱う調理待ち行列モデルの一例について説明する。
【００２８】
図３は、本実施形態の演算装置１が取り扱う調理待ち行列モデルの一例を示す模式図である。この調理待ち行列モデルは、調理待ち注文キューＱＣｋによって示される注文ＯＲの発生数と、調理器ＯＶおよび調理場ＫＣの数と、注文ＯＲの発生から調理の完了までの時間とを表現している。具体的には、この調理待ち行列モデルは、ハンバーガーのパテＰＴ（円盤状の挽肉）を焼く調理器ＯＶと、サラダを調理する調理場ＫＣとがそれぞれ１つあることを表現している。また、この調理待ち行列モデルは、調理器ＯＶと調理場ＫＣとに調理人ＣＫがそれぞれ１名配置されていることを表現している。ハンバーガーの注文ＯＲがあると、調理人ＣＫがこの調理器ＯＶにパテＰＴを投入する。調理器ＯＶは、パテＰＴの投入から所定時間後にパテＰＴを焼いたもの（すなわち、ハンバーグ）を排出する。調理人ＣＫは、パテＰＴを投入し、排出されたハンバーグを調理器ＯＶから取り出してパンに挟み、ハンバーガーを完成させて窓口担当者ＴＬに渡す。この調理器ＯＶについて、より詳細に計算モデル化した待ち行列モデルの一例を、図４を参照して説明する。
【００２９】
図４は、本実施形態の演算装置１が取り扱う投入待ち待ち行列モデルの一例を示す模式図である。この投入待ち待ち行列モデルは、投入待ちパテキューＱＰｔで示される投入待ちのパテＰＴの数と、パテＰＴの投入から排出までの時間とを表現している。この調理器ＯＶとは、パテＰＴを焼く工程が自動化された自動パテ焼き器である。調理器ＯＶは、パテＰＴの投入から所定時間後にパテＰＴを焼いたもの（すなわち、ハンバーグＨＢ）を排出する。
【００３０】
図３に戻り、サラダの注文ＯＲがあると、調理人ＣＫは調理場ＫＣに移動し、所定の工程を経てサラダを調理する。この調理場ＫＣについて、より詳細に計算モデル化した具現化モデルの一例を、図５を参照して説明する。
【００３１】
図５は、本実施形態の演算装置１が取り扱う調理場モデルの一例を示す模式図である。この調理場モデルとは、具象化モデルの一例である。この調理場モデルは、調理台ＤＲの位置と、冷蔵庫ＲＦの位置と、バックヤードＢＹの位置と、調理人ＣＫの動線とを表現している。調理人ＣＫは、サラダの注文ＯＲがあると、サラダの材料（例えば、レタス、玉ねぎなど）を取得するため、冷蔵庫ＲＦに移動する。調理人ＣＫは、冷蔵庫ＲＦからサラダの材料を取得すると、調理台ＤＲに移動し、サラダを調理する。このとき、調理人ＣＫは、冷蔵庫ＲＦにサラダの材料がない（欠品している）場合には、バックヤードＢＹに移動して、欠品している材料を冷蔵庫ＲＦに移動させる。調理人ＣＫは、サラダを調理し終えると、サラダを窓口担当者ＴＬに渡す。
【００３２】
図６は、本実施形態の演算装置１が取り扱う階層化された計算モデルの一例を示す模式図である。演算装置１は、上述した図２〜図５に示す各モデルを階層化してシミュレーションすることができる。具体的には、演算装置１は、注文待ち行列モデルを第１階層に、調理待ち行列モデルを第２階層に、調理器ＯＶモデルおよび調理場モデルを第３階層にして、各計算モデルを連携させてシミュレーションする。このとき、演算装置１は、第１階層の注文待ち行列モデルの出力である「注文ＯＲ」を、第２階層の調理待ち行列モデルの入力にする。また、演算装置１は、第２階層の調理待ち行列モデルの出力の「ハンバーガーの注文ＯＲ」を、第３階層の調理器ＯＶモデルの入力にする。また、演算装置１は、第２階層の調理待ち行列モデルの出力の「サラダの注文ＯＲ」を、第３階層の調理場モデルの入力にする。このように、演算装置１は、上位階層である第１階層の注文待ち行列モデルから、下位階層である第３階層の調理器ＯＶモデルおよび調理場モデルまでを、連携させてシミュレーションする。
【００３３】
なお、この第１階層から第３階層とは、ｎ階層ある計算モデルのうちの、いずれか３つの階層を示す。例えば、計算モデルがｎ階層あり、ｎ階層のうちの３つの階層に着目した場合に、第ｋ階層が第１階層であり、第ｋ＋１階層が第２階層であり、第ｋ＋２階層が第３階層である。ここで、ｎおよびｋは、自然数である。次に、この階層化されたシミュレーションを実現するための、演算装置１の具体的な構成について図７を参照して説明する。
【００３４】
図７は、本実施形態の演算装置１の構成の一例を示す構成図である。演算装置１は、演算部１００と、記憶部２００と、入力部３００と、出力部４００とを備えている。
【００３５】
入力部３００は、例えば、上述したスロットＳＬに接続されており、このスロットＳＬに挿入された記憶媒体３に記憶されている計算モデル情報が入力される。入力部３００は、記憶媒体３から計算モデル情報を取得すると、取得した計算モデル情報を解析対象の計算モデルとして演算部１００に出力する。なお、入力部３００は、演算部１００とは別の独立した構成であるとして説明したが、これに限られない。例えば、入力部３００は、演算部１００の機能の一部として構成されてもよい。
【００３６】
出力部４００は、例えば、上述した表示部１０に接続されており、演算部１００による演算結果を画像データに変換して、表示部１０に演算結果を示す画像データを出力する。これにより、表示部１０の表示面ＤＳには、演算部１００による演算結果を示す画像が表示される。なお、出力部４００は、演算部１００とは別の独立した構成であるとして説明したが、これに限られない。例えば、出力部４００は、演算部１００の機能の一部として構成されてもよい。
【００３７】
記憶部２００は、揮発性の記憶素子（例えば、ＲＡＭ（Random Access Memory））や不揮発性の記憶素子（例えば、フラッシュＲＯＭ（Read Only Memory））、およびそれらの記憶素子を制御する回路等によって構成されている。この記憶部２００には、演算部１００が演算した結果が一時的に保存される。また、この記憶部２００には、計算モデルの演算ルールを示す情報などが予め記憶されている。
【００３８】
演算部１００は、上述のようにＣＰＵを備えており、種々の演算を行う。具体的には、演算部１００は、入力部３００が取得した計算モデル情報と、記憶部２００に記憶されている計算モデルの演算ルールを示す情報とに基づいて、この計算モデルを更新する。
【００３９】
また、演算部１００は、ＣＰＵの演算によって実現される機能部として、第１取得部１１０と、第２取得部１２０と、第１更新部１５０と、第２更新部１６０とを備えている。
【００４０】
第１取得部１１０は、入力部３００が取得した計算モデル情報のうち、第１階層の計算モデル情報を取得する。本実施形態の一例において、この第１階層の計算モデル情報には、図２を参照して説明した注文待ち行列モデルの状態を示す情報が含まれている。ここで、注文待ち行列モデルの状態を示す情報とは、注文待ち行列モデルの各パラメータの設定値の情報や、注文ＯＲ待ち行列の長さを示す情報である。すなわち、第１取得部１１０は、第１階層の待ち行列の状態を取得する。
【００４１】
第２取得部１２０は、入力部３００が取得した計算モデル情報のうち、第２階層の計算モデル情報を取得する。本実施形態の一例において、この第２階層の計算モデル情報には、図３を参照して説明した調理待ち行列モデルの状態を示す情報が含まれている。ここで、調理待ち行列モデルの状態を示す情報とは、調理待ち行列モデルの各パラメータの設定値の情報や、調理待ち行列の長さを示す情報である。すなわち、第２取得部１２０は、第２階層の待ち行列の状態を取得する。
【００４２】
第１更新部１５０は、第１取得部１１０が取得した第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、第２取得部１２０が取得した第２階層の待ち行列の状態を更新する。ここで、予め定められた更新条件とは、記憶部２００に記憶されている計算モデルの演算ルールを示す情報によって定められる条件である。また、第１更新部１５０は、計算モデルの演算ルールに基づいて、第２階層の調理待ち行列の状態を更新する。この第１更新部１５０が調理待ち行列の状態を更新する具体例について、再び図６を参照して説明する。
【００４３】
第１更新部１５０は、第１階層の注文ＯＲ待ち行列の状態が、ある窓口ＣＤにおいて新たな注文ＯＲを受け付けた状態になった場合、受け付けた注文ＯＲを第２階層の調理待ち行列の調理待ち注文ＯＲキューに追加（または、キューイング）する。ここでは、図６に示すように、調理待ち注文ＯＲキューには、第１更新部１５０によって注文ＯＲ１〜４の４つの注文ＯＲがキューイングされている。この一例において、注文ＯＲ１〜４は、それぞれ、ハンバーガーとサラダの注文ＯＲである。第１更新部１５０は、待ち行列の先頭の注文ＯＲ（ここでは、注文ＯＲ１）がハンバーガーとサラダの注文ＯＲであると判定する。次に、第１更新部１５０は、ハンバーガーの注文ＯＲに基づいて、調理器ＯＶにパテＰＴを投入した状態に、注文ＯＲ待ち行列の状態を更新する。また、第１更新部１５０は、サラダの注文ＯＲに基づいて、調理室でサラダの調理を開始する状態に、注文ＯＲ待ち行列の状態を更新する。次に、第１更新部１５０は、調理器ＯＶにパテＰＴを投入してから所定時間が経過したと判定すると、パテＰＴが排出された状態に、注文ＯＲ待ち行列の状態を更新する。次に、第１更新部１５０は、パテＰＴが排出された状態になってから所定時間が経過したと判定すると、ハンバーガーが完成した状態に、注文ＯＲ待ち行列の状態を更新する。また、第１更新部１５０は、調理室でサラダの調理を開始してから所定時間が経過したと判定すると、サラダが完成した状態に、注文ＯＲ待ち行列の状態を更新する。次に、第１更新部１５０は、ハンバーガーとサラダがいずれも完成した状態になったと判定すると、調理待ち注文ＯＲキューから注文ＯＲ１を削除し、調理待ち注文ＯＲキューの注文ＯＲ２〜４の順番を繰り上げて、調理待ち注文ＯＲキューを更新する。ここで、注文ＯＲキューから注文ＯＲ１を削除することとは、注文ＯＲ１の商品ＩＴが窓口担当者ＴＬに引き渡されたことを意味する。
【００４４】
第２更新部１６０は、第１更新部１５０が更新した第２階層の待ち行列の状態に基づいて、第１階層の待ち行列の状態を更新する。具体的には、第２更新部１６０は、上述したように、第１更新部１５０が第２階層の注文ＯＲ待ち行列から注文ＯＲ１を削除したことを検出すると、注文ＯＲ１を発注した窓口ＣＤの状態を、「商品待ち」の状態から「空き」の状態に更新する。ここで、商品待ちの状態とは、窓口ＣＤにいる客ＣＳが注文ＯＲした商品ＩＴが引き渡されるのを待っている状態である。また、空きの状態とは、商品ＩＴを受け取った客ＣＳが窓口ＣＤから退出した状態である。第２更新部１６０は、窓口ＣＤの状態が「空き」である窓口ＣＤがある場合、注文待ちキューＱＯｒの先頭の客ＣＳを、空き状態の窓口ＣＤに移動させる。
【００４５】
[演算装置の動作]
次に、図８を参照して、本実施形態の演算装置１の動作について説明する。
図８は、本実施形態の演算装置１の動作の一例を示すフローチャートである。
（ステップＳ１０）演算部１００は、所定時間ごとに注文ＯＲ待ちイベントが発生しているか否かを判定する。具体的には、第１取得部１１０は、第１階層の待ち行列の状態、すなわち、注文待ち行列モデルの状態を取得する。第２更新部１６０は、第１取得部１１０が取得した注文待ち行列モデルについて、所定時間ごとに注文ＯＲ待ちイベントが発生しているか否かを判定する。ここで、注文ＯＲ待ちイベントとは、注文ＯＲ待ち客キューに新たな客ＣＳを追加する条件が成立することである。この客ＣＳは、上述したように所定の分布（例えば、ポアソン分布）に基づく確率によって注文ＯＲ待ち行列に到着する。第２更新部１６０は、注文ＯＲ待ちイベントが発生していると判定した場合（ステップＳ１０；ＹＥＳ）には、処理をステップＳ２０に進める。また、第２更新部１６０は、注文ＯＲ待ちイベントが発生していないと判定した場合（ステップＳ１０；ＮＯ）には、処理をステップＳ３０に進める。
【００４６】
（ステップＳ２０）第２更新部１６０は、注文ＯＲ待ち客キューに客ＣＳを追加して、処理をステップＳ３０に進める。
【００４７】
（ステップＳ３０）第２更新部１６０は、窓口ＣＤが空いているか否かを判定する。第２更新部１６０は、窓口ＣＤが空いていると判定した場合（ステップＳ３０；ＹＥＳ）には、注文ＯＲ待ち客キューの先頭の客ＣＳを空いている窓口ＣＤに移動させ（ステップＳ４０）、処理をステップＳ５０に進める。また、第２更新部１６０は、窓口ＣＤが空いていないと判定した場合（ステップＳ３０；ＮＯ）には、処理をステップＳ５０に進める。
【００４８】
（ステップＳ５０）第２更新部１６０は、下位の階層の計算モデルによるシミュレーションを行うか否かを判定する。ここで、下位の階層の計算モデルによるシミュレーションを行うか否かは、下位の階層の計算モデル（例えば、調理待ち行列モデル）が存在するか否か、および、この下位の階層の計算モデルによるシミュレーションを行うことが選択されているか否かによって判定される。下位の階層の計算モデルによるシミュレーションを行うか否かは、シミュレーションの目的に応じて、演算装置１のユーザによって選択される。第２更新部１６０は、下位の階層の計算モデルによるシミュレーションを行うと判定した場合（ステップＳ５０；ＹＥＳ）には、下位の階層の計算モデルにイベントを通知して（ステップＳ６０）、処理をステップＳ７０に進める。また、第２更新部１６０は、下位の階層の計算モデルによるシミュレーションを行わないと判定した場合（ステップＳ５０；ＮＯ）には、処理をステップＳ９０に進める。
【００４９】
（ステップＳ７０）第１更新部１５０は、下位の階層の計算モデル（具体的には、調理待ち行列モデル）によるシミュレーションを実行して処理をステップＳ８０に進める。
（ステップＳ８０）第１更新部１５０は、終了条件を満たしたか否かを判定する。ここで、終了条件の具体例には、１つの注文ＯＲに対する商品ＩＴがすべて完成したことなどがある。第１更新部１５０は、終了条件を満たしたと判定した場合（ステップＳ８０；ＹＥＳ）には、処理をステップＳ９０に進める。また、第１更新部１５０は、終了条件を満たしていないと判定した場合（ステップＳ８０；ＮＯ）には、処理をステップＳ７０に戻す。
【００５０】
（ステップＳ９０）第２更新部１６０は、当該階層（ここでは、第１階層）の計算モデルによるシミュレーションを実行して処理をステップＳ１００に進める。
（ステップＳ１００）第２更新部１６０は、終了条件を満たしたか否かを判定する。ここで、終了条件の具体例には、１つの注文ＯＲに対する商品ＩＴをすべて客ＣＳに引き渡したことなどがある。第２更新部１６０は、終了条件を満たしたと判定した場合（ステップＳ１００；ＹＥＳ）には、処理をステップＳ１１０に進める。また、第２更新部１６０は、終了条件を満たしていないと判定した場合（ステップＳ１００；ＮＯ）には、処理をステップＳ９０に戻す。
【００５１】
（ステップＳ１１０）第２更新部１６０は、窓口ＣＤを空き状態に更新して、１イベントの処理を終了する。
【００５２】
以上説明したように、本実施形態の演算装置１は、第１取得部１１０と、第２取得部１２０と、第１更新部１５０と、第２更新部１６０とを備えている。これにより、演算装置１は、階層化された計算モデルを連携させたシミュレーションを行うことができる。またこれら各部を備えることにより、演算装置１は、上述した（２）枠組み同士をネットワーク化する仕組み、および（３）ネットワーク化された枠組みが更に別の枠組み内に定義できる仕組みを提供することができる。この（２）（３）が提供される場合には、（２）（３）が提供されない場合に比べて、モデリングのやり直し（手戻り）を低減することができる。すなわち、演算装置１は、モデリングの手間を低減することができる。
【００５３】
ここで、従来の計算モデルによると、シミュレーション規模が大きくなるほど、モデリングのための作業量が増えるが、計算モデルを再帰的に詳細化して作り込むという考え方がなかった。このため、従来の計算モデルによると、大規模なシミュレーションの場合には、結果が得られるまでのターンアラウンドタイム（ここでは、シミュレーション可能な計算モデルを作り込むまでの時間）が長くなっていた。また、従来の計算モデルによると、ターンアラウンドタイムを短縮するためには、計算モデルを簡略化することが行われている。しかしながら、この場合には、簡略化された計算モデルが他のシミュレーションに再利用しにくいという問題があった。本実施形態の演算装置１によれば、計算モデルを階層化して再帰的に詳細化しながら作り込むことができる。このため、計算モデルを作り込むための作業量と、計算モデルの精度とをトレードオフすることができる。たとえば、本実施形態の演算装置１によれば、大規模な計算モデルであっても、まず簡易的な計算モデルを作成して初期作業量を少なくすることができる。また、必要であれば、計算モデルのうち必要な部分を再帰的に詳細化することができる。このため、本実施形態の演算装置１によれば、計算モデルを作り込むための作業量の低減と、計算モデルの精度の向上とを両立させることができる。つまり、本実施形態の演算装置１によれば、ターンアラウンドタイムを短縮することができる。
【００５４】
［変形例］
また、演算装置１は、図９に示す演算装置１ａのように構成されていてもよい。以下の説明において、上述した実施形態と同一の構成については同一の符号を付して、その説明を省略する。
【００５５】
図９は、本実施形態の演算装置の構成の変形例を示す構成図である。演算装置１ａは、演算部１００ａを備えている。この演算部１００ａは、ＣＰＵの演算によって実現される機能部として、モデル状態取得部１４０と、モデル状態更新部１８０とを備えている。
【００５６】
モデル状態取得部１４０は、解析対象の移動経路と移動経路の所要時間とを示す情報を含む具象化モデルの状態を取得する。この具象化モデルとは、上述の一例においては、図５に示す調理場モデルである。また、解析対象とは、上述の一例においては、図５に示す調理人ＣＫである。この具象化モデルは、調理人ＣＫの移動経路と各移動経路の所要時間とを示す情報を含んでいる。具体的には、調理人ＣＫの移動経路とは、調理場ＫＣの入口、冷蔵庫ＲＦ、調理台ＤＲ、バックヤードＢＹを相互に結ぶ動線である。また、各移動経路の所要時間とは、各動線を調理人ＣＫが移動する移動時間である。
【００５７】
モデル状態更新部１８０は、調理待ち行列モデルの状態と、予め定められた更新条件とに基づいて、調理場モデルの状態を更新する。すなわち、モデル状態更新部１８０は、第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、モデル状態取得部１４０が取得した具象化モデルの状態を更新する。なお、ここでいう第１階層とは、具象化モデルの階層の上位の階層であればよい。例えば、具象化モデルの階層が下位階層（第３階層）である場合には、ここでいう第１階層には、上述した上位階層（第１階層）および中位階層（第２階層）が含まれる。
【００５８】
また、このように構成した場合には、第２更新部１６０は、さらに、モデル状態更新部１８０が更新した具象化モデルの状態に基づいて、第１階層の待ち行列の状態を更新する。
【００５９】
このように演算装置１ａが、モデル状態取得部１４０と、モデル状態更新部１８０とを備える場合には、演算装置１ａは、抽象的な計算モデル（例えば、待ち行列モデル）だけでなく、具象化モデルをも取り扱うことができる。すなわち、演算装置１ａは、上述した（１）抽象化された計算モデル（例えば、待ち行列モデル）と具象化モデルどちらも定義できる枠組みを提供する。この枠組みを提供することにより、抽象化された計算モデルを作成することが困難である場合には、具象化モデルを作成することができる。すなわち、演算装置１ａは、モデリングの手間を低減することができる。
【００６０】
また、演算部１００ａは、ＣＰＵの演算によって実現される機能部として、第３取得部１３０と、第３更新部１７０と、第４更新部１９０とを備えていてもよい。
【００６１】
第３取得部１３０は、第３階層の待ち行列の状態を取得する。
第３更新部１７０は、第２取得部１２０が取得した第２階層の待ち行列の状態と、予め定められた更新条件とに基づいて、第３取得部１３０が取得した第３階層の待ち行列の状態を更新する。
第４更新部１９０は、第３更新部１７０が更新した第３階層の待ち行列の状態に基づいて、第２階層の待ち行列の状態を更新する。
【００６２】
また、このように構成した場合には、第１更新部１５０は、さらに、第３更新部１７０が更新した第３階層の待ち行列の状態に基づいて、第２階層の待ち行列の状態を更新する。
【００６３】
このように演算装置１ａが、第３取得部１３０と、第３更新部１７０と、第４更新部１９０とを備える場合には、演算装置１ａは、計算モデルの階層化の段階をさらに増やすことができる。これにより、演算装置１ａは、階層化が２段階の場合に比べて計算モデルの組み合わせかたの自由度を向上することができる。したがって、この演算装置１ａによれば、複雑なシステムをモデリングする場合であっても、各計算モデルの構成をより単純化してモデリングすることができる。すなわち、演算装置１ａは、モデリングの手間を低減することができる。
【００６４】
なお、上述においては、第２階層の計算モデルが、調理待ち行列モデルの１つである例について説明したが、これに限られない。演算装置１（または、演算装置１ａ。以下の説明においては、演算装置１および演算装置１ａを総称して演算装置と記載する。）は、ある階層の計算モデルに対して、下位の階層の計算モデルを複数対応付けることができる。例えば、第２階層には、複数の待ち行列が含まれていてもよい。この場合には、第２取得部１２０は、複数の待ち行列の状態をそれぞれ取得する。また、第１更新部１５０は、第１取得部１１０が取得した第１階層の待ち行列の状態と、予め定められた更新条件とに基づいて、第２取得部１２０がそれぞれ取得した複数の待ち行列の状態をそれぞれ更新する。また、第２更新部１６０は、第１更新部１５０がそれぞれ更新した複数の待ち行列の状態に基づいて、第１階層の待ち行列の状態を更新する。
【００６５】
このように構成することによっても、演算装置は、階層化された計算モデルを取り扱うことが可能であるため、モデリングの手間を低減することができる。また、演算装置１ａは、下位の階層の計算モデルが１つの場合に比べて計算モデルの組み合わせかたの自由度を向上することができるため、モデリングの手間をさらに低減することができる。
【００６６】
また、第４更新部１９０は、さらに第１更新部１５０が更新した第１階層の待ち行列の状態に基づいて、第２階層の待ち行列の状態を更新してもよい。すなわち、第４更新部１９０は、第３階層の待ち行列の状態と、第１階層の待ち行列の状態とに基づいて、第２階層の待ち行列の状態を更新する。これにより、第４更新部１９０は、第３階層の待ち行列の状態と、第１階層の待ち行列の状態とのうち、いずれの待ち行列に基づいて第２階層の待ち行列の状態を更新するかの優先度に基づいて、第２階層の待ち行列の状態を更新することができる。
【００６７】
ここで、図１０〜図１３を参照して、演算装置１または演算装置１ａ（以下の説明においては、これらを総称して、演算装置と記載する。）が演算の対象にする計算モデルの一例について説明する。
図１０は、計算モデルの基本計算部１０１の一例を示す模式図である。この基本計算部１０１は、イベント受取部１０２と、待ち行列１０３と、処理単位部１０４と、待ち行列の処理単位への割り当て部１０５と、次イベント生成部１０６とを備えている。イベント受取部１０２は、他の基本計算部１０１で生成されたイベントを受け取る。待ち行列１０３は、イベント受取部１０２が受け取ったイベントを処理単位部１０４が処理するまでの間、イベント受取部１０２が受け取った順にイベントをキューイングする。処理単位部１０４は、イベントに対して所定の条件に基づく演算（処理）を行う。この処理単位部１０４は、その数を増減することができる。また、処理単位部１０４は、ある処理時間に基づいて演算を行う。この処理時間は、処理単位部１０４毎、またはイベント毎に変更することができる。これにより、同一のイベントに対して、対応（処理）の速度が速い人（または、物）と、速度が遅い人（または、物）を、計算モデルとして表現することができる。また、イベント毎に処理時間を変更することができるため、例えば、注文内容の違いにより処理時間が変わるようにして、計算モデルを作成することができる。待ち行列の処理単位への割り当て部１０５は、処理単位部１０４の演算の進捗状況に応じて、待ち行列１０３にキューイングされているイベントを、処理単位部１０４に割り当てる。次イベント生成部１０６は、処理単位部１０４が行った演算の結果に基づいてイベントを生成し、生成したイベントを次の基本計算部１０１に供給する。
【００６８】
図１１は、基本計算部１０１がネットワーク化された状態の一例を示す模式図である。同図に示すように、計算モデルにおいて、基本計算部１０１はネットワーク化することができる。すなわち、基本計算部１０１どうしを直列または並列に接続することができる。たとえば、４つの基本計算部１０１（基本計算部１０１−１〜−４）がネットワーク化されている場合について説明する。基本計算部１０１−１の次イベント生成部１０６に複数（たとえば、２つ）の基本計算部１０１（基本計算部１０１−２、−３）が接続される場合には、基本計算部１０１−１の次イベント生成部１０６は、イベントを分岐（分配）する機能を有する。また、基本計算部１０１−４のイベント受取部１０２に複数（たとえば、２つ）の基本計算部１０１（基本計算部１０１−２、−３）が接続される場合には、基本計算部１０１−４のイベント受取部１０２は、イベントを合流（マージ）する機能を有する。
【００６９】
図１２は、基本計算部１０１が階層化された状態の一例を示す模式図である。同図に示すように、基本計算部１０１は、処理単位部１０４が、さらにサブ基本計算部１０１Ａ（例えば、サブ基本計算部１０１Ａ−１、−２）を備えることができる。この場合、処理単位部１０４は、イベント受取部１０２が受け取ったイベントを、サブ基本計算部１０１Ａが処理可能なイベントに変換するイベント変換部１０７Ａを備えている。また、処理単位部１０４は、サブ基本計算部１０１Ａが演算（処理）を完了した場合に、サブ基本計算部１０１Ａの演算の終了を、処理単位部１０４の演算（処理）の終了に変換する演算終了変換部１０７Ｂを備えている。これにより、演算装置は、計算モデルを階層化することができる。
【００７０】
図１３は、具象計算モデルを有する基本計算部の一例を示す模式図である。同図に示すように、基本計算部の処理単位部１０４は、抽象計算モデルの他に、具象計算モデルを演算対象にすることができる。この場合には、処理単位部１０４は、イベント受取部１０２が受け取ったイベントを、具象モデルへの入力に変換する入力変換部１０９Ａを備えている。処理単位部１０４は、具象モデルによる演算（処理）を完了した場合に、具象モデルによる演算の終了を、処理単位部１０４の演算（処理）の終了に変換する終了変換部１０９Ｂを備えている。この入力変換部１０９Ａおよび終了変換部１０９Ｂを備えることにより、演算装置は、抽象計算モデルの他に、具象計算モデルを演算対象にすることができる。
【００７１】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更を加えることができる。
【００７２】
なお、演算装置が備える各部は、専用のハードウェアにより実現されるものであってもよく、また、メモリおよびマイクロプロセッサにより実現させるものであってもよい。
【００７３】
なお、演算装置が備える各部は、メモリおよびＣＰＵにより構成され、電子装置が備える各部の機能を実現するためのプログラムをメモリにロードして実行することによりその機能を実現させるものであってもよい。
【００７４】
また、演算装置が備える各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、制御部が備える各部による処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【００７５】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【符号の説明】
【００７６】
１、１ａ…演算装置、３…記憶媒体、１０…表示部、２０…本体、１００、１００ａ…演算部、１１０…第１取得部、１２０…第２取得部、１３０…第３取得部、１４０…モデル状態取得部、１５０…第１更新部、１６０…第２更新部、１７０…第３更新部、１８０…モデル状態更新部、２００…記憶部、３００…入力部、４００…出力部、ＤＳ…表示面、ＫＢ…キーボード、ＴＰ…タッチパッド、ＳＬ…スロット
【図１】
2015118450.tif 000003
【図２】
2015118450.tif 000004
【図３】
2015118450.tif 000005
【図４】
2015118450.tif 000006
【図５】
2015118450.tif 000007
【図６】
2015118450.tif 000008
【図７】
2015118450.tif 000009
【図８】
2015118450.tif 000010
【図９】
2015118450.tif 000011
【図１０】
2015118450.tif 000012
【図１１】
2015118450.tif 000013
【図１２】
2015118450.tif 000014
【図１３】
2015118450.tif 000015