(57)【特許請求の範囲】
【請求項１】
プロジェクトごとにおける各リソースの稼働割当率を変更する稼働割当率変更部と、
プロジェクトにおける前記稼働割当率の変更に応じたリソースの稼働期間の増減を示す変動稼働期間を算出する変動稼働期間算出部と、
前記変動稼働期間を利用して、前記プロジェクトに割り当てるべきリソースの稼働期間の過不足を示す稼働期間指数を算出する稼働期間指数算出部と、
前記変動稼働期間が増加を示している場合、前記稼働期間指数が示す余剰分の稼働期間を、リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる増加リソース対応割当処理を実行し、前記変動稼働期間が減少を示している場合、前記稼働期間指数が示す不足分の稼働期間を、前記プロジェクトにおいて対象のリソースが属するチェーンにおけるタスクの期間の延伸に割り当てる減少リソース対応割当処理を実行し、前記増加リソース対応割当処理または前記減少リソース対応割当処理に応じて設定したプロジェクトバッファ消費率を記憶部に記憶させる稼働期間割当部と、
前記リソースの各々を対象として前記増加リソース対応割当処理または前記減少リソース対応割当処理が行われた結果に応じて設定された前記プロジェクトごとの前記プロジェクトバッファ消費率を前記記憶部から読み出し、読み出したプロジェクトバッファ消費率を出力するバッファ消費率出力部と、
を備えることを特徴とするシミュレーション装置。
【請求項２】
前記稼働期間割当部は、
前記変動稼働期間が減少を示している場合、非クリティカルチェーンにおいて対象のリソースが属するタスクの期間を合流バッファが完全に消費されるまで延伸させるために前記不足分の稼働期間を割り当てる合流バッファ消費処理を実行し、
前記合流バッファ消費処理を行うことのできる非クリティカルチェーンが存在しなくなった場合、プロジェクトにおけるチェーンのうちで対象のリソースが属するチェーンごとのタスクに対して、前記不足分の稼働期間における残存分を分配して割り当てる分配処理を実行し、
前記変動稼働期間が増加を示している場合において、前記合流バッファ消費処理により記タスク期間が延伸されていた場合には、前記余剰分の稼働期間を、この延伸されていたタスク期間の還元に割り当て、この後に、前記余剰分の稼働期間が残存しているのであれば、この残存分を前記リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる、
ことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記稼働期間指数算出部は、
前回対象のリソースの割り当て結果により生じた前記余剰分の稼働期間の残存分または前記不足分の稼働期間の残存分と、今回対象のリソースに対応して算出された前記変動稼働期間とを利用して前記稼働期間指数を算出し、
前記稼働期間割当部は、
前記変動稼働期間が増加を示している場合において、前記プロジェクトに割り当てるべきリソースの稼働期間に不足があることを前記稼働期間指数が示している場合には、前記増加リソース対応割当処理を実行せず、
前記変動稼働期間が減少を示している場合において、前記プロジェクトに割り当てるべきリソースの稼働期間に余剰があることを前記稼働期間指数が示している場合には、前記増加リソース対応割当処理を実行しない、
ことを特徴とする請求項１または２に記載のシミュレーション装置。
【請求項４】
シミュレーション装置の稼働割当率変更部が、プロジェクトごとにおける各リソースの稼働割当率を変更する稼働割当率変更ステップと、
シミュレーション装置の変動稼働期間算出部が、プロジェクトにおける前記稼働割当率の変更に応じたリソースの稼働期間の増減を示す変動稼働期間を算出する変動稼働期間算出ステップと、
シミュレーション装置の稼働期間指数算出部が、前記変動稼働期間を利用して、前記プロジェクトに割り当てるべきリソースの稼働期間の過不足を示す稼働期間指数を算出する稼働期間指数算出ステップと、
シミュレーション装置の稼働期間割当部が、前記変動稼働期間が増加を示している場合、前記稼働期間指数が示す余剰分の稼働期間を、リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる増加リソース対応割当処理を実行し、前記変動稼働期間が減少を示している場合、前記稼働期間指数が示す不足分の稼働期間を、前記プロジェクトにおいて対象のリソースが属するチェーンにおけるタスクの期間の延伸に割り当てる減少リソース対応割当処理を実行し、前記増加リソース対応割当処理または前記減少リソース対応割当処理に応じて設定したプロジェクトバッファ消費率を記憶部に記憶させる稼働期間割当ステップと、
シミュレーション装置のバッファ消費率出力部が、前記リソースの各々を対象として前記増加リソース対応割当処理または前記減少リソース対応割当処理が行われた結果に応じて設定された前記プロジェクトごとの前記プロジェクトバッファ消費率を前記記憶部から読み出し、読み出したプロジェクトバッファ消費率を出力するバッファ消費率出力ステップと、
を備えることを特徴とするシミュレーション方法。
【請求項５】
コンピュータに、
プロジェクトごとにおける各リソースの稼働割当率を変更する稼働割当率変更ステップと、
プロジェクトにおける前記稼働割当率の変更に応じたリソースの稼働期間の増減を示す変動稼働期間を算出する変動稼働期間算出ステップと、
前記変動稼働期間を利用して、前記プロジェクトに割り当てるべきリソースの稼働期間の過不足を示す稼働期間指数を算出する稼働期間指数算出ステップと、
前記変動稼働期間が増加を示している場合、前記稼働期間指数が示す余剰分の稼働期間を、リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる増加リソース対応割当処理を実行し、前記変動稼働期間が減少を示している場合、前記稼働期間指数が示す不足分の稼働期間を、前記プロジェクトにおいて対象のリソースが属するチェーンにおけるタスクの期間の延伸に割り当てる減少リソース対応割当処理を実行し、前記増加リソース対応割当処理または前記減少リソース対応割当処理に応じて設定したプロジェクトバッファ消費率を記憶部に記憶させる稼働期間割当ステップと、
前記リソースの各々を対象として前記増加リソース対応割当処理または前記減少リソース対応割当処理が行われた結果に応じて設定された前記プロジェクトごとの前記プロジェクトバッファ消費率を前記記憶部から読み出し、読み出したプロジェクトバッファ消費率を出力するバッファ消費率出力ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置、シミュレーション方法およびプログラムに関する。
【背景技術】
【０００２】
生産活動における進捗を管理するプロジェクト管理手法として、ＣＣＰＭ(Critical Chain Project Management)と呼ばれる手法が知られている。このＣＣＰＭは、不確定要素が多いプロジェクトにおいて、プロジェクト全体の納期を短縮することを目的としており、ＴＯＣ（Theory Of Constraints）の基本原理を適用している。
従来型（ウォーターフォール開発）の管理では、タスクの割当期間として、予想外の事態が発生したとしてもこれに対応可能なように、９割方終わるであろう期間を設定している。つまり、ウォーターフォール開発では、タスクごとにバッファを設定している。これに対して、ＣＣＰＭでは、チャレンジ見積もりとして、タスクが終わるかどうか五分五分の割当期間をタスクの期間として設定する。そのうえで、チャレンジ見積もりを行うことで短くなった期間分をプロジェクトバッファとして統合し、プロジェクトの後ろで集中管理するという手法を取っている。
【０００３】
プロジェクトは、その遂行にあたって様々な不確定要素が発生し、これによりリソースの作業割り当て量やスケジュールなどが日々変動する。このために、例えばプロジェクトにおける稼働状況は、その進行にしたがって開始当初において最適であるとして設定した要員の稼働割り当て率から乖離し、リソース（要員）ごとの負荷に偏りが生じる。この結果、当初の要員計画が形骸化し、例えば組織のリーダーがリソースの負荷状況を定量的に把握することが難しくなる。このような状況となった場合には、要員計画を修正する必要が生じてくる。
【０００４】
このような要員計画の修正は、例えばガントチャートを利用して行われる。
また、例えば以下のような作業計画管理装置が知られている。つまり、この作業計画管理装置は、作業計画を完了するための目標時間と作業計画を完了するために必要であると予測される予測時間とに基づいて作業計画の作業時間の余裕度を算出する。そのうえで、作業計画管理装置は、余裕度と、記憶装置において作業者ごとに記録されている作業の遂行に関する能力の高さを示す指標値とに基づいて、作業計画の少なくとも一部の作業の担当させる作業者を選択する。これにより、作業計画の状況に応じて適切な作業者を作業に割り当てようというものである（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１５８９７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ガントチャートによる要員計画の修正は、個々のタスクの進捗結果に基づいて行われるため、タスクの集合であるプロジェクト全体としての進捗状況を把握することは難しい。また、ガントチャートでは出来高によって進捗を把握しているために、実績として完了した作業を定量化することは可能であるものの、将来のプロジェクト全体の進捗を的確に推定することは難しい。つまり、ガントチャートによる管理では、将来のプロジェクトの実現可能性を把握したうえで要員計画を修正するということが難しい。
また、特許文献１は、プロジェクトにおける工程ごとにスキルの差による偏りができるだけ生じないよう作業者を割り当てることを目的とするものであり、この技術によって、将来のプロジェクトの実現可能性を把握することは難しい。
【０００７】
本発明は、このような事情に鑑みてなされたもので、将来におけるプロジェクトごとの実現可能性を的確に把握できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明の一態様としてのシミュレーション装置は、プロジェクトごとにおける各リソースの稼働割当率を変更する稼働割当率変更部と、プロジェクトにおける前記稼働割当率の変更に応じたリソースの稼働期間の増減を示す変動稼働期間を算出する変動稼働期間算出部と、前記変動稼働期間を利用して、前記プロジェクトに割り当てるべきリソースの稼働期間の過不足を示す稼働期間指数を算出する稼働期間指数算出部と、前記変動稼働期間が増加を示している場合、前記稼働期間指数が示す余剰分の稼働期間を、リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる増加リソース対応割当処理を実行し、前記変動稼働期間が減少を示している場合、前記稼働期間指数が示す不足分の稼働期間を、前記プロジェクトにおいて対象のリソースが属するチェーンにおけるタスクの期間の延伸に割り当てる減少リソース対応割当処理を実行し、前記増加リソース対応割当処理または前記減少リソース対応割当処理に応じて設定したプロジェクトバッファ消費率を記憶部に記憶させる稼働期間割当部と、
前記リソースの各々を対象として前記増加リソース対応割当処理または前記減少リソース対応割当処理が行われた結果に応じて設定された前記プロジェクトごとの前記プロジェクトバッファ消費率を前記記憶部から読み出し、読み出したプロジェクトバッファ消費率を出力するバッファ消費率出力部とを備えることを特徴とするシミュレーション装置。
【０００９】
また、本発明において、前記稼働期間割当部は、前記変動稼働期間が減少を示している場合、非クリティカルチェーンにおいて対象のリソースが属するタスクの期間を合流バッファが完全に消費されるまで延伸させるために前記不足分の稼働期間を割り当てる合流バッファ消費処理を実行し、前記合流バッファ消費処理を行うことのできる非クリティカルチェーンが存在しなくなった場合、プロジェクトにおけるチェーンのうちで対象のリソースが属するチェーンごとのタスクに対して、前記不足分の稼働期間における残存分を分配して割り当てる分配処理を実行し、前記変動稼働期間が増加を示している場合において、前記合流バッファ消費処理により記タスク期間が延伸されていた場合には、前記余剰分の稼働期間を、この延伸されていたタスク期間の還元に割り当て、この後に、前記余剰分の稼働期間が残存しているのであれば、この残存分を前記リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てるものである。
【００１０】
また、本発明において、前記稼働期間指数算出部は、前回対象のリソースの割り当て結果により生じた前記余剰分の稼働期間の残存分または前記不足分の稼働期間の残存分と、今回対象のリソースに対応して算出された前記変動稼働期間とを利用して前記稼働期間指数を算出し、前記稼働期間割当部は、前記変動稼働期間が増加を示している場合において、前記プロジェクトに割り当てるべきリソースの稼働期間に不足があることを前記稼働期間指数が示している場合には、前記増加リソース対応割当処理を実行せず、前記変動稼働期間が減少を示している場合において、前記プロジェクトに割り当てるべきリソースの稼働期間に余剰があることを前記稼働期間指数が示している場合には、前記増加リソース対応割当処理を実行しないものである。
【００１１】
また、本発明の一態様としてのシミュレーション方法は、プロジェクトごとにおける各リソースの稼働割当率を変更する稼働割当率変更ステップと、プロジェクトにおける前記稼働割当率の変更に応じたリソースの稼働期間の増減を示す変動稼働期間を算出する変動稼働期間算出ステップと、前記変動稼働期間を利用して、前記プロジェクトに割り当てるべきリソースの稼働期間の過不足を示す稼働期間指数を算出する稼働期間指数算出ステップと、前記変動稼働期間が増加を示している場合、前記稼働期間指数が示す余剰分の稼働期間を、リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる増加リソース対応割当処理を実行し、前記変動稼働期間が減少を示している場合、前記稼働期間指数が示す不足分の稼働期間を、前記プロジェクトにおいて対象のリソースが属するチェーンにおけるタスクの期間の延伸に割り当てる減少リソース対応割当処理を実行し、前記増加リソース対応割当処理または前記減少リソース対応割当処理に応じて設定したプロジェクトバッファ消費率を記憶部に記憶させる稼働期間割当ステップと、
前記リソースの各々を対象として前記増加リソース対応割当処理または前記減少リソース対応割当処理が行われた結果に応じて設定された前記プロジェクトごとの前記プロジェクトバッファ消費率を前記記憶部から読み出し、読み出したプロジェクトバッファ消費率を出力するバッファ消費率出力ステップとを備える。
【００１２】
また、本発明の一態様としてのプログラムは、コンピュータに、プロジェクトごとにおける各リソースの稼働割当率を変更する稼働割当率変更ステップと、プロジェクトにおける前記稼働割当率の変更に応じたリソースの稼働期間の増減を示す変動稼働期間を算出する変動稼働期間算出ステップと、前記変動稼働期間を利用して、前記プロジェクトに割り当てるべきリソースの稼働期間の過不足を示す稼働期間指数を算出する稼働期間指数算出ステップと、前記変動稼働期間が増加を示している場合、前記稼働期間指数が示す余剰分の稼働期間を、リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる増加リソース対応割当処理を実行し、前記変動稼働期間が減少を示している場合、前記稼働期間指数が示す不足分の稼働期間を、前記プロジェクトにおいて対象のリソースが属するチェーンにおけるタスクの期間の延伸に割り当てる減少リソース対応割当処理を実行し、前記増加リソース対応割当処理または前記減少リソース対応割当処理に応じて設定したプロジェクトバッファ消費率を記憶部に記憶させる稼働期間割当ステップと、前記リソースの各々を対象として前記増加リソース対応割当処理または前記減少リソース対応割当処理が行われた結果に応じて設定された前記プロジェクトごとの前記プロジェクトバッファ消費率を前記記憶部から読み出し、読み出したプロジェクトバッファ消費率を出力するバッファ消費率出力ステップとを実行させるためのものである。
【発明の効果】
【００１３】
以上説明したように、本発明によれば、将来におけるプロジェクトごとの実現可能性を的確に把握できるようになり、例えば要員策定などを有効に補助することが可能になるという効果が得られる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態におけるシミュレーション装置の構成例を示す図である。
【図２】本実施形態のシミュレーション装置によるシミュレーション結果例を示す図である。
【図３】本実施形態における稼働割当率設定テーブルの構造例を示す図である。
【図４】本実施形態におけるプロジェクト情報テーブルの構造例を示す図である。
【図５】本実施形態におけるチェーン情報テーブルの構造例を示す図である。
【図６】本実施形態におけるタスク情報テーブルの構造例を示す図である。
【図７】本実施形態におけるシミュレーション装置が実行する処理手順例を示す図である。
【図８】本実施形態のシミュレーション装置における稼働期間割当部が実行する減少リソース対応割当処理の一例を説明するための図である。
【図９】本実施形態のシミュレーション装置における稼働期間割当部が実行する減少リソース対応割当処理の一例を説明するための図である。
【図１０】本実施形態のシミュレーション装置における稼働期間割当部が実行する減少リソース対応割当処理の一例を説明するための図である。
【図１１】本実施形態のシミュレーション装置における稼働期間割当部が実行する減少リソース対応割当処理の一例を説明するための図である。
【図１２】本実施形態のシミュレーション装置における稼働期間割当部が実行する増加リソース対応割当処理の一例を説明するための図である。
【図１３】本実施形態のシミュレーション装置における稼働期間割当部が実行する増加リソース対応割当処理の一例を説明するための図である。
【図１４】本実施形態のシミュレーション装置における稼働期間割当部が実行する増加リソース対応割当処理の一例を説明するための図である。
【発明を実施するための形態】
【００１５】
［シミュレーション装置の構成］
図１は、本発明の実施形態としてのシミュレーション装置１００の構成例を示している．この図に示すシミュレーション装置１００は、ＣＣＰＭ(Critical Chain Project Management)によるプロジェクト管理に対応する。そのうえで、複数のプロジェクト間でリソースの稼働割り当て率を変更した場合のプロジェクトごとのプロジェクトバッファ消費率をシミュレーションするものである。
プロジェクトバッファ消費率は、プロジェクトにおいて設定されたプロジェクトバッファがどれだけ消費されているのかを、プロジェクトバッファの期間と、このプロジェクトバッファを消費しているタスクの期間との比率により示すものである。
【００１６】
図１に示すシミュレーション装置１００は、操作部１０１、稼働割当率変更部１０２、変動稼働期間算出部１０３、稼働期間指数算出部１０４、稼働期間割当部１０５、バッファ消費率出力部１０６、記憶部１０７および表示部１０８を備える。
【００１７】
操作部１０１は、管理者（ユーザ）がシミュレーション装置１００を操作するための操作デバイスや操作子を一括して示したものである。一例として、この操作部１０１は、キーボードやマウスなどを含む。
【００１８】
稼働割当率変更部１０２は、プロジェクトごとにおける各リソースの稼働割当率を変更する。
具体的に、管理者は、プロジェクトごとのプロジェクトバッファ消費率をシミュレーションするにあたり、操作部１０１に対する操作によりプロジェクトごとにおける各リソースの稼働割当率を任意に変更することができる。稼働割当率変更部１０２は、上記のように稼働割当率を操作する操作が行われるのに応じて、プロジェクトごとにおける各リソースの稼働割当率を変更し、その変更結果を記憶部１０７の稼働割当率設定テーブル２１０に記憶させる。
なお、本実施形態においてリソースとは、プロジェクトにおけるタスクを処理する人間、すなわち、作業者である。
【００１９】
変動稼働期間算出部１０３は、プロジェクトにおける稼働割当率の変更に応じたリソースの稼働期間の増減を示す変動稼働期間を算出する。
【００２０】
稼働期間指数算出部１０４は、変動稼働期間算出部１０３により算出された変動稼働期間を利用して、プロジェクトに割り当てるべきリソースの稼働期間の過不足を示す稼働期間指数を算出する。
【００２１】
稼働期間割当部１０５は、変動稼働期間算出部１０３により算出された変動稼働期間が増加を示している場合、前記稼働期間指数が示す余剰分の稼働期間を、リソース依存のクリティカルチェーンにおけるタスクに属すべきリソースの変更に割り当てる増加リソース対応割当処理を実行する。
また、稼働期間割当部１０５は、変動稼働期間が減少を示している場合、稼働期間指数が示す不足分の稼働期間を、プロジェクトにおいて対象のリソースが属するチェーンにおけるタスクの期間の延伸に割り当てる減少リソース対応割当処理を実行する。
そして、稼働期間割当部１０５は、増加リソース対応割当処理または減少リソース対応割当処理に応じて設定したプロジェクトバッファ消費率を記憶部１０７に記憶させる。
【００２２】
バッファ消費率出力部１０６は、リソースの各々を対象として増加リソース対応割当処理または減少リソース対応割当処理が行われた結果に応じて設定されたプロジェクトごとのプロジェクトバッファ消費率を前記記憶部から読み出し、読み出したプロジェクトバッファ消費率を出力する。
【００２３】
つまり、本実施形態のバッファ消費率出力部１０６は、例えばリソースの稼働割当率を複数のプロジェクト間で融通するように変更したとする場合の複数のプロジェクトごとのプロジェクトバッファ消費率をシミュレーション結果として出力する。
ＣＣＰＭにおけるプロジェクトバッファは、対応のプロジェクト全体の進捗状況を示すものである。したがって、このようにシミュレーション結果として出力されるプロジェクトごとのプロジェクトバッファ消費率がプロジェクトごとの将来の実現可能性の指標となる。
【００２４】
また、本実施形態のバッファ消費率出力部１０６は、シミュレーション結果であるプロジェクトごとのプロジェクトバッファ消費率を表示部１０８に表示させることにより出力する。なお、この際においてプロジェクトバッファ消費率をどのような態様により表示させるのかについて多様に考えられるものであり、特に限定されるものではない。
【００２５】
記憶部１０７は、シミュレーション装置１００がシミュレーションを行うのに必要な各種の情報を記憶する。この図では、記憶部１０７が記憶する情報として、稼働割当率設定テーブル２１０、２１０Ａ、プロジェクト情報テーブル２２０、チェーン情報テーブル２３０およびタスク情報テーブル２４０が示されている。
【００２６】
表示部１０８は、前述のようにバッファ消費率出力部１０６の制御によりプロジェクトごとのバッファ消費率がシミュレーション結果として出力される。
【００２７】
なお、図１における稼働割当率変更部１０２、変動稼働期間算出部１０３、稼働期間指数算出部１０４、稼働期間割当部１０５およびバッファ消費率出力部１０６の各機能部は、例えばコンピュータにおけるＣＰＵ（Central Processing Unit）にプログラムを実行させることにより実現することができる。
【００２８】
［シミュレーション結果例］
図２は、シミュレーション装置１００によるシミュレーション結果例を模式的に示している。なお、ここでの説明は、３つのプロジェクトＡ、Ｂ、Ｃに対して３名のリソース１、２、３の稼働割当率を変更する場合を示している。
【００２９】
図２（ａ）は、例えば現行におけるリソース１、２、３ごとのプロジェクトＡ、Ｂ、Ｃに対する稼働割当率の一設定例を示している。図２（ａ）において、リソース１は、プロジェクトＡに対して５０％、プロジェクトＢに対して２５％、プロジェクトＣに対して２５％というように稼働割当率が設定されている。
また、リソース２は、プロジェクトＡに対して０％、プロジェクトＢに対して１００％、プロジェクトＣに対して０％というように稼働割当率が設定されている。
また、リソース３は、プロジェクトＡに対して０％、プロジェクトＢに対して５０％、プロジェクトＣに対して５０％というように稼働割当率が設定されている。
【００３０】
図２（ｂ）は、図２（ａ）に示す稼働割当率の設定内容に応じた現状のプロジェクトごとプロジェクトバッファ消費率を示している。図２（ｂ）において、プロジェクトＡのプロジェクトバッファ消費率は８０％であり、プロジェクトＢのプロジェクトバッファ消費率は２０％であり、プロジェクトＣのプロジェクトバッファ消費率は４０％である。
【００３１】
図２（ｂ）のプロジェクトバッファ消費率の内訳の場合、プロジェクトＡにおけるプロジェクトバッファ消費率が相当に高いのに対して、プロジェクトＢにおけるプロジェクトバッファ消費率は相当に低いといえる。
このことは、プロジェクトＡの進捗が遅延傾向にあるのに対して、プロジェクトＢにおいてはスケジュールにある程度の余裕があることを示している。また、このことは、プロジェクトＡにおいてはリソースが不足傾向であるのに対して、プロジェクトＢにおいてはリソースが余剰傾向にあるということも示している。
このようにプロジェクトごとの負荷がアンバランスであると、例えばプロジェクトＢは、予め設定された終了日よりも相当前に終了してしまうのに対して、プロジェクトＡは期限を遵守することが非常に厳しくなるというような事態の起こることが予測される。
【００３２】
このように共通のリソースを使用する複数のプロジェクトを並行で進行させる場合、進行状況を適切に管理することが必要となる。
例えば、各プロジェクトが終了期限までに適切なバランスを維持しながら進捗していく方が好ましい場合もあれば、あるプロジェクトのみ早期に終了させ、他のプロジェクトは期限いっぱいで終了させたい場合もある。
前者の場合は、プロジェクトごとにプロジェクトバッファを同等の比率で消費していくように進捗させることに相当し、後者の場合は、複数のうちのいずれかのプロジェクトの消費の比率が限度を超えないように進捗させることに相当する。
【００３３】
そこで、本実施形態の管理者は、例えば、プロジェクトＡ、Ｂ、Ｃ間でプロジェクトバッファ消費率ができるだけ均一になるような稼働割当率を見つけ出すために、本実施形態のシミュレーション装置１００を用いてシミュレーションを行わせる。
そして、管理者は、図２（ａ）から図２（ｃ）への遷移として示すように稼働割当率を変更する操作を行ったものである。
つまり、管理者は、リソース２について、プロジェクトＢに対する１００％の稼働割当率のうち、５０％をプロジェクトＡに対して割り当てるように変更する。また、リソース３についても、プロジェクトＢに対する５０％の稼働割当率のうち、１０％をプロジェクトＡに対して割り当てるように変更する。
【００３４】
これにより、リソース２は、プロジェクトＡに対して５０％、プロジェクトＢに対して５０％、プロジェクトＣに対して０％というように稼働割当率の内訳が変更されたことになる。また、リソース３も、プロジェクトＡに対して１０％、プロジェクトＢに対して４０％、プロジェクトＣに対して５０％というように稼働割当率の内訳が変更される。なお、この場合、リソース１の稼働割当率について変化はない。
【００３５】
図２（ｄ）は、図２（ｃ）のように変更されたリソースのプロジェクトに対する稼働割当率に応じてシミュレーション装置１００が出力したシミュレーション結果を示している。
この図２（ｄ）の結果を、図２（ｂ）と比較すると、プロジェクトＡのプロジェクトバッファ消費率は８０％から６０％に低下し、プロジェクトＢのプロジェクトバッファ消費率は２０％から４０％に増加し、プロジェクトＣのプロジェクトバッファ消費率は４０％から３０％に低下している。
【００３６】
このシミュレーション結果は、図２（ａ）から図２（ｃ）のようにプロジェクトＢにおけるリソースの余剰分をプロジェクトＡの不足分を補うように割り当てたことにより、プロジェクトＡ、Ｂ、Ｃ間のプロジェクトバッファ消費率が現行よりも均一化されたことを意味している。つまり、図２（ａ）の場合と比較して、図２（ｃ）は、プロジェクトごとに対するリソースの割り当てがより適切に行われているものである。
【００３７】
例えば、管理者は、このようにプロジェクトに対するリソースごとの稼働割当率を適宜変更しながら、そのシミュレーション結果として出力されるプロジェクトごとのプロジェクトバッファ消費率を確認する。そして、管理者は、このように出力されるシミュレーション結果を参考にして、現実にプロジェクトＡ、Ｂ、Ｃを進捗させるにあたってのプロジェクトごとに対するリソースごとの稼働割当率を決定し、要員計画を策定することができる。
例えば、本実施形態のシミュレーション装置によっては、プロジェクトバッファ消費率のバランスが最適となるリソースのプロジェクトごとに対する稼働割当率を得ることができる。そして、このように得られた稼働割当率に基づいて要員計画を策定することができるのであるから、例えば管理者は、最適な要員計画についての判断を容易かつ的確に行うことができる。つまり、本実施形態のシミュレーション装置１００によっては、要員策定などの管理者の作業を有効に補助することができる。
また、本実施形態においては、複数のプロジェクト間でリソースを共有するような場合に対応して、各プロジェクト間のプロジェクトバッファ消費率をシミュレーションすることができる。例えば、特許文献１に記載の構成は、１つのプロジェクトにおいて偏り無く作業員をタスクに割り当てるようにしているものであり、複数のプロジェクトに対応しているものではない。
【００３８】
［記憶部に記憶される情報の構造例］
以降、上記した本実施形態のシミュレーション装置１００によるシミュレーションを実現するための構成例について説明していく。なお、以降の説明は、本実施形態のＣＣＰＭによるプロジェクト管理が「日」を単位として行われる場合に対応する。
【００３９】
まず、シミュレーション装置１００の記憶部１０７が記憶する稼働割当率設定テーブル２１０、プロジェクト情報テーブル２２０、チェーン情報テーブル２３０およびタスク情報テーブル２４０について説明する。
【００４０】
稼働割当率設定テーブル２１０は、各リソースのプロジェクトごとに対する稼働割当率の変更内容を示すテーブルである。例えば、図２（ａ）や図２（ｃ）に示したプロジェクトに対するリソースの稼働割当率の内訳は、稼働割当率設定テーブル２１０によって示されるものである。
【００４１】
図３は、稼働割当率設定テーブル２１０の構造例を示している。
この図に示す稼働割当率設定テーブル２１０における１レコードは、１プロジェクトに対する１リソースの稼働割当率の内容（個別アサイン情報）を示している。
【００４２】
個別アサイン情報は、アサインＩＤ格納部２１１、プロジェクト格納部２１２、リソース格納部２１３および稼働割当率格納部２１４が対応付けられた構造を有する。
アサインＩＤ格納部２１１は、個別アサイン情報ごとに固有に付与されるアサインＩＤを格納する。
プロジェクト格納部２１２は、稼働割当率が設定されるプロジェクトのプロジェクト名またはプロジェクトＩＤを格納する。この図のプロジェクト格納部２１２では、プロジェクト名が格納されている。
リソース格納部２１３は、稼働割当率が設定されるリソースのリソース名またはリソースＩＤを示す。
【００４３】
例えば、図３におけるアサインＩＤ＝Ａ１の個別アサイン情報は、リソースｒ１のプロジェクトＡに対する稼働割当率が５０％に設定されていることを示している。また、アサインＩＤ＝Ａ２の個別アサイン情報は、リソースｒ１のプロジェクトＢに対する稼働割当率が５０％に設定されていることを示している。また、アサインＩＤ＝Ａ３の個別アサイン情報は、リソースｒ２のプロジェクトＡに対する稼働割当率が１００％に設定されていることを示している。
【００４４】
なお、記憶部１０７は、稼働割当率設定テーブル２１０と同じ構造によるもう１つの稼働割当率設定テーブル２１０Ａも記憶する。
稼働割当率設定テーブル２１０Ａは、現在において現実に設定されている現行の稼働割当率を示すテーブルである。これに対して、稼働割当率設定テーブル２１０は、管理者の操作に応じて、現行に対応する稼働割当率設定テーブル２１０Ａを元にして変更された稼働割当率の内訳を示す。
【００４５】
また、プロジェクト情報テーブル２２０は、プロジェクトごとについての所定の情報を格納するテーブルである。
【００４６】
図４は、プロジェクト情報テーブル２２０の一例を示している。この図に示すプロジェクト情報テーブルは、プロジェクトごとに、プロジェクトＩＤ格納部２２１、プロジェクト名格納部２２２、開始日格納部２２３、終了日格納部２２４、稼働期間指数格納部２２５を対応付けた構造である。
【００４７】
プロジェクトＩＤ格納部２２１は、対応のプロジェクトを一意に識別するプロジェクトＩＤを格納する。
プロジェクト名格納部２２２は、対応のプロジェクトのプロジェクト名を格納する。
開始日格納部２２３は、対応のプロジェクトの開始日を格納する。
終了日格納部２２４は、対応のプロジェクトの終了日を格納する。
稼働期間指数格納部２２５は、対応のプロジェクトに対応して稼働期間指数算出部１０４が設定した稼働期間指数を格納する。
【００４８】
チェーン情報テーブル２３０は、チェーンごとについての所定の情報を格納するテーブルである。なお、チェーンとは、プロジェクトにおけるタスクのつながりにより形成される作業単位である。チェーンは、プロジェクトにおいて１以上存在する。そして、ＣＣＰＭではプロジェクトのなかで最長のチェーンをクリティカルチェーンという。
【００４９】
図５は、チェーン情報テーブル２３０の構造例を示している。この図に示すチェーン情報テーブル２３０は、チェーンごとに、チェーンＩＤ格納部２３１、プロジェクト格納部２３２、クリティカルチェーンフラグ格納部２３３およびバッファ消費率格納部２３４を対応付けた構造である。
【００５０】
チェーンＩＤ格納部２３１は、複数のプロジェクト全体において対応のチェーンを一意に識別するチェーンＩＤを格納する。
プロジェクト格納部２３２は、対応のチェーンを含むプロジェクトのプロジェクト名またはプロジェクトＩＤを格納する。この図におけるプロジェクト格納部２３２は、プロジェクト名を格納している。
【００５１】
クリティカルチェーンフラグ格納部２３３は、対応のチェーンがクリティカルチェーンであるか否かを示すクリティカルチェーンフラグの値を格納する。クリティカルチェーンフラグの値が「１」であればクリティカルチェーンフラグであることを示す。クリティカルチェーンフラグの値が「０」であればクリティカルチェーンフラグではないことを示す。
【００５２】
バッファ消費率格納部２３４は、対応のチェーンのバッファ消費率の値を格納する。
なお、対応のチェーンがクリティカルチェーンである場合、そのバッファは、プロジェクトバッファとなる。したがって、対応のチェーンがクリティカルチェーンである場合のバッファ消費率格納部２３４は、プロジェクトバッファ消費率を格納する。また、対応のチェーンが非クリティカルチェーンである場合、バッファ消費率格納部２３４は、そのチェーンに対応する合流バッファ消費率を格納する。
なお、合流バッファ消費率は、合流バッファがどれだけ消費されているのかを、合流バッファの期間と、この合流バッファを消費しているタスクの期間との比率により示すものである。
【００５３】
タスク情報テーブル２４０は、タスクごとについての所定の情報を格納するテーブルである。
図６は、タスク情報テーブル２４０の構造例を示している。この図に示すタスク情報テーブル２４０は、タスクごとに、タスクＩＤ格納部２４１、プロジェクト格納部２４２、開始日格納部２４３、終了日格納部２２４、延伸期間格納部２４５、割当リソース格納部２４６、リソース依存先行タスク格納部２４７、タスク依存先行タスク格納部２４８および所属チェーン格納部２４９を対応付けた構造である。
【００５４】
タスクＩＤ格納部２４１は、対応のタスクを一意に識別するタスクＩＤを格納する。
プロジェクト格納部２４２は、対応のタスクを含むプロジェクトのプロジェクト名またはプロジェクトＩＤを格納する。この図におけるプロジェクト格納部２４２は、プロジェクト名を格納している。
【００５５】
開始日格納部２４３は、対応のタスクの開始日を示す情報を格納する。
終了日格納部２２４は、対応のタスクの終了日を示す情報を格納する。
【００５６】
延伸期間格納部２４５は、対応のタスクについて減少リソース対応割当処理によってタスク期間が延伸された場合、その延伸された期間（日数）を格納する。
【００５７】
割当リソース格納部２４６は、対応のタスクに割り当てられたリソースのリソースＩＤまたはリソース名を格納する。
【００５８】
リソース依存先行タスク格納部２４７は、対応のタスクの先行タスクとしてリソース依存のタスクが存在する場合、そのリソース依存タスクのタスクＩＤを格納する。
タスク依存先行タスク格納部２４８は、対応のタスクの先行タスクとしてタスク依存のタスクが存在する場合、そのタスク依存のタスクのタスクＩＤを格納する。
所属チェーン格納部２４９は、対応のタスクが属するチェーンを示すチェーンＩＤを格納する。
【００５９】
［処理手順例］
次に、図７のフローチャートを参照して、リソースごとの複数プロジェクトに対する稼働割当率の変更に応じて、シミュレーション装置１００がプロジェクトバッファ消費率をシミュレーションするための処理手順例について説明する。
【００６０】
まず、管理者は、シミュレーション装置１００にプロジェクトバッファ消費率のシミュレーションを実行させるにあたり、リソースごとの複数プロジェクトに対する稼働割当率を変更するための操作を操作部１０１に対して行う。具体的には、例えば図２（ａ）から図２（ｃ）への遷移として示したように、管理者は、リソースごとのプロジェクトにおける稼働割当率稼働率を変更する。
【００６１】
上記のように稼働割当率を変更する操作が行われるのに応じて、稼働割当率変更部１０２は稼働割当率を変更設定する（ステップＳ１０１）。このために、稼働割当率変更部１０２は、操作により変更された稼働割当率が反映されるように、稼働割当率設定テーブルを更新する。
【００６２】
ステップＳ１０１による稼働割当率の変更設定は、管理者によるシミュレーション実行を指示する操作が行われるまで（ステップＳ１０２：ＮＯ）、管理者の稼働割当率変更のための操作が行われるごとに実行される。
【００６３】
そして、シミュレーション実行を指示する操作が行われるのに応じて（ステップＳ１０２：ＹＥＳ）、シミュレーション装置１００は、そのときの稼働割当率設定テーブル２１０の設定内容に応じたプロジェクトバッファ消費率のシミュレーションを以下のように行う。
【００６４】
このために、まず、変動稼働期間算出部１０３は、複数のプロジェクトごとに付した番号に対応する変数Ｐについて初期値である「１」を代入する（ステップＳ１０３）。
次に、変動稼働期間算出部１０３は、複数のリソースごとに付した番号に対応する変数Ｎについて初期値である「１」を代入する（ステップＳ１０４）。
【００６５】
次に、変動稼働期間算出部１０３は、プロジェクトＰにおけるリソースＮについての変動稼働期間ａｐ，Ｎを算出する（ステップＳ１０５）。
変動稼働期間ａｐ，Ｎは、現行のプロジェクトＰにおけるリソースＮの稼働割当率に対する、ステップＳ１０１により変更されたリソースＮの稼働割当率の変動値を期間に変換したものである。本実施形態において、プロジェクトは、「日」を単位として管理されるので、変動稼働期間ａｐ，Ｎは期間を日数により表す。
【００６６】
変動稼働期間算出部１０３は、変動稼働期間を例えば以下のように求める。
つまり、変動稼働期間算出部１０３は、プロジェクトＰにおけるリソースｒＮの変動稼働期間ａｐ，Ｎを、以下の式１により算出する。
ａｐ，Ｎ  ＝  ＤＰ（Ａ’Ｐ，Ｎ−ＡＰ，Ｎ）・・・・（式１）
なお、式１において、ＡＰ，Ｎは、現行のプロジェクトＰにおけるリソースＮの稼働割当率であり、ステップＳ１０１による変更後のプロジェクトＰにおけるリソースｒＮの稼働割当率である。また、ＤＰは、プロジェクトＰの期間である。
【００６７】
一例として、現行におけるプロジェクトＰにおけるリソースＮの稼働割当率ＡＰ，Ｎが６０％で、変更後のプロジェクトＰにおけるリソースＮの稼働割当率Ａ’Ｐ，Ｎが２０％で、プロジェクトＰの期間ＤＰが５０日であるとする。
この場合の変動稼働期間ａｐ，Ｎは、（式１）により
ａｐ，Ｎ＝５０（０．２−０．６）＝−２０
のように、−２０日として求められる。これは、プロジェクトＰに対するリソースＮの稼働割当率が６０％から２０％と−４０％に変更されたのに応じて、５０日の工程期間のプロジェクトＰにおけるリソースＮの稼働日が２０日減少することを示している。
【００６８】
なお、変動稼働期間算出部１０３は、上記の演算を行うにあたり、現行におけるプロジェクトＰにおけるリソースＮの稼働割当率ＡＰ，Ｎを、現行の稼働割当率を示す稼働割当率設定テーブル２１０Ａから取得する。また、変動稼働期間算出部１０３は、変更後のプロジェクトＰにおけるリソースＮの稼働割当率Ａ’Ｐ，Ｎを、変更後の稼働割当率を示す稼働割当率設定テーブル２１０から取得する。
また、変動稼働期間算出部１０３は、プロジェクトＰの期間ＤＰを、次のように求める。つまり、変動稼働期間算出部１０３は、プロジェクト情報テーブル２２０においてプロジェクトＰに対応するプロジェクトＩＤに対応付けられた開始日と終了日を読み込む。そして、この読み込んだ開始日から終了日までの日数を求める。このように求められた日数が期間ＤＰである。
【００６９】
次に、稼働期間割当部１０５は、ステップＳ１０５により算出された変動稼働期間ａｐ，Ｎの値について、「ａｐ，Ｎ＝０」、「ａｐ，Ｎ＜０」、「ａｐ，Ｎ＞０」のいずれであるのかについて判定する（ステップＳ１０６）。
変動稼働期間ａｐ，Ｎ＝０である場合（ステップＳ１０６：ａｐ，Ｎ＝０）、現行と変更後の稼働割当率の設定内容において変動はない、つまり、変更は行われていない。そこで、この場合には、ステップＳ１０７〜Ｓ１１２による稼働期間指数ＲＰの算出と、稼働期間割り当てのための処理をスキップしてステップＳ１１３に進む。
【００７０】
また、変動稼働期間ａｐ，Ｎ＜０である場合には（ステップＳ１０６：ａｐ，Ｎ＜０）、稼働割当率が現行から減少するように変更されている。この場合には、稼働期間指数算出部１０４と稼働期間割当部１０５は、以下のように処理を実行する。
【００７１】
まず、稼働期間指数算出部１０４は、プロジェクトＰについての稼働期間指数ＲＰを算出する（ステップＳ１０７）。この稼働期間指数ＲＰは、プロジェクトＰに割り当てるべきリソースの稼働期間（稼働日数）の過不足を示す指数である。稼働期間指数算出部１０４は、このプロジェクトＰについての稼働期間指数ＲＰを算出するにあたり、以下の式２による演算を行う。
ＲＰ＝ＲＰ＋ａｐ，Ｎ・・・（式２）
【００７２】
つまり、式２は、これまでの稼働期間指数ＲＰの値に対してステップＳ１０５により求められた変動稼働期間ａｐ，Ｎを加算することにより、再帰解としての稼働期間指数ＲＰを求めるものである。なお、このステップＳ１０７の場合には、変動稼働期間ａｐ，Ｎが負の数であるため、式２により求められる稼働期間指数ＲＰの数は前回より減少する。
【００７３】
上記のように算出される稼働期間指数ＲＰは、正の値であればプロジェクトＰに割り当てるべきリソースの稼働期間が余剰であることを示し、負の値であればプロジェクトＰに割り当てるべきリソースの稼働期間が不足であることを示す。また、稼働期間指数ＲＰの値が「０」であれば、プロジェクトＰに割り当てるべきリソースの稼働期間に過不足がなく、適切であることを示す。
【００７４】
なお、ループにおける最初のステップＳ１０７において稼働期間指数ＲＰを設定する際、稼働期間指数算出部１０４は、式２の右辺における稼働期間指数ＲＰに対して初期値である「０」を代入する。
【００７５】
また、稼働期間指数算出部１０４は、算出した稼働期間指数ＲＰを、図４のプロジェクト情報テーブル２２０においてプロジェクトＰに対応付けられた稼働期間指数格納部２２５に格納する。
【００７６】
次に、稼働期間割当部１０５は、ステップＳ１０７により求められた稼働期間指数ＲＰが０未満（ＲＰ＜０）であるか否かについて判定する（ステップＳ１０８）。
稼働期間指数ＲＰが０以上（ＲＰ≧０）である場合（ステップＳ１０８：ＮＯ）として、稼働期間指数ＲＰ＝０であれば、現段階においてプロジェクトＰに対して割り当てるべきリソースの稼働期間に過不足はない。したがって、プロジェクトＰからこれ以上リソースを削減しないほうがよい。
また、稼働期間指数ＲＰ≧１である場合、プロジェクトＰに対するリソースＮの稼働割当率を減少させるように変更設定したのに係わらず、現段階でのプロジェクトＰに対して割り当てるべきリソースの稼働期間は余剰の状態にある。この状態では、プロジェクトＰからこれ以上リソースを削減しても稼働期間は有効に延伸されず、減少リソース対応割当処理を行うことの有意性がない。
そこで、稼働期間指数ＲＰが０以上の場合（ステップＳ１０８：ＮＯ）、稼働期間割当部１０５は、ステップＳ１０９をスキップしてステップＳ１１３に進む。
【００７７】
一方、稼働期間指数ＲＰが０未満である場合には（ステップＳ１０８：ＹＥＳ）、まだプロジェクトＰにおいてはリソースの割り当てが不足していることになる。そこで、この場合の稼働期間割当部１０５は、プロジェクトＰに対するリソースＮの稼働割当率の減少に対応させたリソースの稼働期間の割り当て（減少リソース対応割当処理）を実行する（ステップＳ１０９）。この減少リソース対応割当処理は、稼働期間指数ＲＰが示す不足分を補填するように稼働期間を延伸していく処理である。また、減少リソース対応割当処理においては、稼働期間の延伸に応じて変更設定したプロジェクトバッファ消費率をチェーン情報テーブル２３０においてクリティカルチェーンのバッファ消費率格納部２３４に記憶させる。
なお、この減少リソース対応割当処理の具体例については後述する。
【００７８】
また、変動稼働期間ａｐ，Ｎ＞０である場合には（ステップＳ１０６：ａｐ，Ｎ＞０）、稼働割当率が現行から増加するように変更されている。この場合、稼働期間指数算出部１０４と稼働期間割当部１０５は、以下のように処理を実行する。
【００７９】
まず、稼働期間指数算出部１０４は、プロジェクトＰについての稼働期間指数ＲＰを算出する（ステップＳ１１０）。このステップＳ１１０において稼働期間指数算出部１０４が稼働期間指数ＲＰを算出するにあたっては、ステップＳ１０７と同様に式２を利用した演算を行えばよい。ただし、ステップＳ１０７の場合には、変動稼働期間ａｐ，Ｎが正の数であるので、式２により求められる稼働期間指数ＲＰの数は前回より増加する。
【００８０】
次に、稼働期間割当部１０５は、ステップＳ１０７により求められた稼働期間指数ＲＰが０より大きい（ＲＰ＞０）か否かについて判定する（ステップＳ１１１）。
稼働期間指数ＲＰが０以下（ＲＰ≦０）である場合（ステップＳ１１１：ＮＯ）として、稼働期間指数ＲＰ＝０であれば、現段階においてプロジェクトＰに対して割り当てるべきリソースの稼働期間に過不足はないので、これ以上、リソースの稼働期間を追加する必要はない。
また、稼働期間指数ＲＰ≦−１であれば、現段階ではプロジェクトＰに対して割り当てるべきリソースの稼働期間が不足の状態にあり、プロジェクトＰに対してリソースの稼働期間を追加できない。いずれにせよ、稼働期間指数ＲＰが０以下の場合には、リソースの稼働期間を追加することは妥当でない。
そこで、稼働期間指数ＲＰが０以下である場合（ステップＳ１１１：ＮＯ）、稼働期間割当部１０５は、ステップＳ１１２をスキップしてステップＳ１１３に進む。
【００８１】
一方、稼働期間指数ＲＰが０より大きい場合（ステップＳ１１１：ＹＥＳ）、稼働期間割当部１０５は、プロジェクトＰに対するリソースＮの稼働割当率の増加に対応させたリソースの稼働期間の割り当て（増加リソース対応割当処理）を実行する（ステップＳ１１２）。この増加リソース対応割当処理は、稼働期間指数ＲＰが示す余剰分が削減されるように稼働期間を短縮していく処理である。また、増加リソース対応割当処理においては、稼働期間の短縮に応じて変更設定したプロジェクトバッファ消費率をチェーン情報テーブル２３０においてクリティカルチェーンのバッファ消費率格納部２３４に記憶させる。
なお、増加リソース対応割当処理の具体例については後述する。
【００８２】
ステップＳ１０５〜Ｓ１１２の処理の後、例えば変動稼働期間算出部１０３は、変数Ｎが最大値であるか否かについて判定する（ステップＳ１１３）。
【００８３】
変数Ｎが最大値ではない場合には（ステップＳ１１３：ＮＯ）、未だ、プロジェクトＰにおいて稼働割当率の変更に応じた稼働期間の割り当てが行われていないリソースが残っている。そこで、この場合には、変数Ｎをインクリメントして（ステップＳ１１４）、ステップＳ１０５に戻る。これにより、次のリソースについての稼働期間の割り当てが行われる。
【００８４】
そして、変数Ｎが最大値となった場合には（ステップＳ１１３：ＹＥＳ）、プロジェクトＰにおいてすべてのリソースについての稼働割当率の変更に応じた稼働期間の割り当てが行われたことになる。
そこで、バッファ消費率出力部１０６は、稼働割当率の変更に応じたプロジェクトＰのプロジェクトバッファ消費率を出力する（ステップＳ１１５）。このために、バッファ消費率出力部１０６は、現段階のチェーン情報テーブル２３０から、プロジェクトＰのクリティカルチェーンに対応するレコードを検索し、この検索したレコードにおけるバッファ消費率格納部２３４に格納されている値を読み出し、この値をプロジェクトＰのプロジェクトバッファ消費率として表示部１０８に表示させるように出力する。
【００８５】
また、ステップＳ１１５によりプロジェクトＰのプロジェクトバッファ消費率を出力した後、例えば変動稼働期間算出部１０３は、変数Ｐが最大値であるか否かについて判定する（ステップＳ１１５）
【００８６】
変数Ｐが最大値ではない場合には（ステップＳ１１６：ＮＯ）、未だ、プロジェクトバッファ消費率を出力していないプロジェクトが残っている。そこで、この場合には、変数Ｐをインクリメントして（ステップＳ１１７）、ステップＳ１０４に戻る。これにより、次のプロジェクトＰについてシミュレーションしたプロジェクトバッファ消費率を出力するための処理が実行される。
そして、バッファ消費率出力部１０６がすべてのプロジェクトのプロジェクトバッファ消費率を出力し終えて変数Ｎが最大値となると（ステップＳ１１３：ＹＥＳ）、この図に示す処理が終了される。
【００８７】
［減少リソース対応割当処理の例］
次に、図８〜図１１を参照して、稼働期間割当部１０５がステップＳ１０９として実行する減少リソース対応割当処理の具体例について説明する。
【００８８】
図８は、プロジェクトＰのスケジュールを示している。この図８に示すスケジュールは、例えば現行の状況に対応するもので、例えばリソースＮを対象とする減少リソース対応割当処理を実行する前の工程表を示している。稼働期間割当部１０５は、この図８に示されるスケジュールを、図４のプロジェクト情報テーブル２２０と、図５チェーン情報テーブル２３０と、図６のタスク情報テーブル２４０に格納されるプロジェクトＰに対応する情報を利用して認識することができる。
【００８９】
図８に示すプロジェクトＰは、プロジェクトバッファを含めて３０日の工程期間であり、チェーンＡ〜Ｄの４つのチェーンを含む。チェーンＡ〜Ｄのそれぞれは、複数のタスクの時間方向におけるつながり（チェーン）により形成される。
図８において、個々のタスクは、ブロックとして示される。また、タスクのブロックにおいて示される「ｒ１」、「ｒ２」、「ｒ３」は、そのタスクに対して割り当てられたリソース１〜３をそれぞれ示す。なお、
【００９０】
ＣＣＰＭにおいて、タスクには、その終了見積もりが５０％程度の期間が設定される。これに伴い、例えばプロジェクトバッファはクリティカルチェーンの１／２程度の期間が設定され、合流バッファも対応の非クリティカルチェーンの１／２程度の期間が設定される。
【００９１】
図８において、その期間が最長のチェーンはチェーンＡである。つまり、チェーンＡはクリティカルチェーンである。他のチェーンＢ〜Ｄは非クリティカルチェーンである。チェーンＡの工程期間は２０日間となっており、これに応じて、プロジェクトバッファは、チェーンＡの工程期間の１／２である１０日間に設定されている。
また、チェーンＢの工程期間は１２日間であり、これに応じて、チェーンＢの合流バッファは６日間に設定されている。
また、チェーンＣの工程期間は１０日間であり、これに応じて、チェーンＢの合流バッファは５日間に設定されている。
また、チェーンＤの工程期間は４日間であり、これに応じて、チェーンＢの合流バッファは２日間に設定されている。
【００９２】
この図８に示すスケジュールに対して減少リソース対応割当処理を行うにあたり、変動稼働期間算出部１０３は、ステップＳ１０７において稼働期間指数ＲＰ＝−１１を算出したものとする。また、稼働期間割り当ての対象リソースは、リソース１（ｒ１）であるものとする。つまり、ステップＳ１０４により設定された変数Ｎが「１」の場合である。
【００９３】
この場合において、まず、稼働期間割当部１０５は、非クリティカルチェーンにおいて対象のリソースが属するタスクを延伸させることにより合流バッファを消費させる合流バッファ消費処理を実行する。
このために、稼働期間割当部１０５は、プロジェクトＰにおけるチェーンのうちから、リソース１が属する非クリティカルチェーンのうちで最も合流バッファ消費率が低いものを検索する。
例えば、稼働期間割当部１０５は、チェーン情報テーブル２３０を参照してプロジェクトＰにおける非クリティカルチェーンを検索する。つまり、稼働期間割当部１０５は、プロジェクト格納部２３２にプロジェクトＰを示すプロジェクト名を格納し、かつ、クリティカルチェーンフラグ格納部２３３に「０」を格納するレコードをチェーン情報テーブル２３０から検索する。このように検索されたレコードにおけるチェーンＩＤ格納部２３１に格納されるチェーンＩＤにより特定されるチェーンが、プロジェクトＰにおける非クリティカルチェーンである。
【００９４】
次に、稼働期間割当部１０５は、検索した非クリティカルチェーンのうちから、さらに、そのチェーン内のタスクにリソース１が属しているものを検索する。
このために、稼働期間割当部１０５は、タスク情報テーブル２４０を利用する。
つまり、稼働期間割当部１０５は、タスク情報テーブル２４０において、クリティカルチェーンであると検索したチェーンＩＤを所属チェーン格納部２４９に格納するタスクを検索する。次に、この検索したタスクのうちから、さらに割当リソース格納部２４６にリソース１（ｒ１）が格納されているタスクを検索する。このように検索されたタスクの所属チェーン格納部２４９に格納されているチェーンＩＤが、プロジェクトＰにおいてリソースｒ１が属する非クリティカルチェーンを示す。
【００９５】
次に、稼働期間割当部１０５は、上記のように検索したリソース１が属する非クリティカルチェーンのうちで、合流バッファ消費率が最も少ないものを検索する。
このために、稼働期間割当部１０５は、チェーン情報テーブル２３０を参照して、リソース１が属する非クリティカルチェーンのチェーンＩＤをチェーンＩＤ格納部２３１に格納するレコードのうちで、バッファ消費率格納部２３４に格納されている値が最小のものを検索する。
このように検索されたレコードのチェーンＩＤ格納部２３１に格納されるチェーンＩＤが、リソース１が属する非クリティカルチェーンのうちで最も合流バッファ消費率が低いチェーンである。
【００９６】
図８において、チェーンＡがクリティカルチェーンであり、チェーンＢ〜Ｄが非クリティカルチェーンである。また、非クリティカルチェーンであるチェーンＢ〜Ｄのうちで、リソース１が属するのはチェーンＢとチェーンＤである。チェーンＢの合流バッファ消費率は４０％であるのに対して、チェーンＤの合流バッファ消費率は０％である。
したがって、稼働期間指数算出部１０４は、図８においてリソース１が属する非クリティカルチェーンのうちで最も合流バッファ消費率が低いチェーンとして、チェーンＤを検索する。
【００９７】
次に、稼働期間割当部１０５は、検索したチェーンＤにおけるリソース１が属するタスクの期間を合流バッファが１００％となるまで延伸させる。図８の場合、チェーンＤの合流バッファは２日間に設定されているので、この合流バッファを０％から１００％とするには、リソース１が属するタスクの期間を２日間延伸させる。
【００９８】
図９は、チェーンＤの合流バッファを１００％とするようにタスクを延伸した例を示している。
チェーンＤは、２つのタスクがつながれて形成されており、これら２つのタスクはいずれもリソース１が属する。ここで行うべきことはシミュレーションであるため、上記のように対象のリソースが属するタスクがチェーン内に複数在る場合、延伸させるべきタスクとしては２つのうちのいずれを選択してもよい。そこで、例えば稼働期間割当部１０５は、所定規則にしたがっていずれか１つを選択すればよい。図９の場合には、２つのタスクのうち、後続のタスクを選択している。そして、この後続のタスクの期間を２日延伸させている。これにより、チェーンＤの終了日も２日後にシフトする。これに伴って、チェーンＤの合流バッファは完全に消費され、その消費率は１００％となる。
【００９９】
なお、稼働期間割当部１０５は、上記のようにタスクを延伸させるのに応じて、延伸させたタスクに対応するタスク情報テーブル２４０のレコードにおける延伸期間格納部２４５に対して延伸された日数を格納する。また、同じレコードにおける終了日格納部２４４に格納される終了日について、タスクの延伸により変更された日に更新する。
また、タスクの延伸により合流バッファ消費率が変更されるのに応じて、稼働期間割当部１０５は、チェーン情報テーブル２３０において該当の非クリティカルチェーン（チェーンＤ）に対応するレコードのバッファ消費率格納部２３４に格納される値を更新する。
【０１００】
そして、稼働期間割当部１０５は、上記のように稼働期間を２日延伸させたのに応じて、「−１１」の稼働期間指数ＲＰについて「＋２」を加算することで、「−９」に更新する。つまり、稼働期間割当部１０５は、タスクに稼働期間を割り当てるごとに、その割り当てた日数ｄに応じて、
ＲＰ＝ＲＰ＋ｄ・・・（式３）
による演算を行って稼働期間指数ＲＰを更新する。
【０１０１】
なお、稼働期間割当部１０５は、このように稼働期間指数ＲＰを更新するごとに、プロジェクト情報テーブル２２０における稼働期間指数格納部２２５に格納される値についても、更新した値を反映させるように書き換えを行う。
【０１０２】
上記のように、稼働期間割当部１０５は、リソースＮが属する非クリティカルチェーンのうちで合流バッファ消費率が最小のチェーンを選択する。そして、選択したチェーンにおける合流バッファ消費率が１００％となるまで、リソースＮが属するタスクを延伸するように稼働期間の割り当てを行う。
そして、稼働期間割当部１０５は、プロジェクトＰにおいてリソースＮが属する非クリティカルチェーンで合流バッファ消費率が１００％未満のものが無くなるまで、上記と同様の稼働期間の割り当てを繰り返し実行する。
【０１０３】
図９の場合であれば、チェーンＢが、リソース１が属する非クリティカルチェーンで合流バッファ消費率が１００％未満のものに該当する。チェーンＢの合流バッファは６日間が確保されているが、そのうちの３日が消費されている。つまり、この段階でのチェーンＢの合流バッファ消費率は５０％である。
【０１０４】
そこで、稼働期間割当部１０５は、図１０に示すように、チェーンＢにおいてリソース１が属するタスクを３日分延伸する。これにより、チェーンＢの合流バッファはすべて消費され、その消費率は１００％となる。
【０１０５】
また、このようにタスクを延伸したのに応じて、稼働期間割当部１０５は、「−９」の稼働期間指数ＲＰについて「＋３」を加算することにより、「−６」に更新する。
【０１０６】
図１０の段階で、「リソース１が属する非クリティカルチェーンで合流バッファ消費率が１００％未満のもの」は無くなる。しかし、この段階での稼働期間指数ＲＰは「−６」であり、依然としてリソースが不足している状態を示している。
【０１０７】
この場合、稼働期間割当部１０５は、以下のように稼働期間指数ＲＰに対応する不足分の稼働期間の残存分を分配して割り当てる分配処理を行う。
つまり、稼働期間割当部１０５は、プロジェクトＰにおいてリソース１が属するすべてのチェーンを選択する。この際、選択するチェーンは、クリティカルチェーンと非クリティカルチェーンのいずれであるのかを問わない。
図１０の場合、稼働期間割当部１０５は、リソース１が属するすべてのチェーンとして、チェーンＡ、Ｂ、Ｄの３つを選択する。
次に、稼働期間割当部１０５は、選択したチェーン数により、現段階の稼働期間指数ＲＰを除算することにより、チェーンごとの分配割り当て期間を求める。
図１０の場合、リソース１が属するチェーン数は「３」であり、稼働期間指数ＲＰは「−６」である。この場合、稼働期間割当部１０５は、「−２＝（−６／３）」を分配割り当て期間として求める。
【０１０８】
そして、稼働期間割当部１０５は、上記のように求めた「−２」の分配割り当て期間により、選択した３つのチェーンＡ、Ｂ、Ｄにおけるリソース１が属するタスクの期間を均等に２日ずつ延伸する。
つまり、図１１に示すように、チェーンＡにおける先頭から３つ目のリソース１が属するタスクの期間について２日の延伸を行う。なお、チェーンＡには、リソース１が属するタスクが先頭と３つ目との２つ存在するが、この場合にも、いずれのタスクを選択して延伸させてもよく、例えば先頭のタスクを延伸させてもよい。
また、同様に、チェーンＢにおけるリソース１が属するタスクの期間についてさらに２日の延伸を行い、チェーンＤにおけるリソース１が属するタスクの期間についてもさらに２日の延伸を行う。
【０１０９】
この結果、クリティカルチェーンであるチェーンＡの工程期間の終了日は、２０日目（図８）から２２日目に延伸する。これに伴って、２１日目から３０日目までの１０日間にわたって設定してあるプロジェクトバッファは、２日が消費されることになる。これに応じて、稼働期間割当部１０５は、プロジェクトバッファ消費率を０％から２０％に増加させるように変更設定する。
【０１１０】
なお、前述もしたように、プロジェクトバッファは、クリティカルチェーンであるチェーンＡのバッファである。稼働期間割当部１０５は、プロジェクトバッファ消費率が上記のように変更設定されるごとに、チェーン情報テーブル２３０のチェーンＡに対応するバッファ消費率格納部２３４において変更設定後の値が格納されるように更新する。
【０１１１】
また、チェーンＢにおけるリソース１が属するタスクの期間について２日の延伸が行われたのに応じて、稼働期間割当部１０５は、チェーンＢの合流バッファ消費率も、１００％から１４０％に増加するように変更設定する。
また、チェーンＤにおけるリソース１が属するタスクの期間について２日の延伸が行われたのに応じて、稼働期間割当部１０５は、チェーンＤの合流バッファ消費率も、１００％から２００％に増加するように変更設定する。
また、稼働期間割当部１０５は、このようにチェーンＢとチェーンＤの合流バッファ消費率を変更設定するのに応じて、チェーン情報テーブル２３０のチェーンＢ、Ｄにそれぞれ対応するバッファ消費率格納部２３４に格納される値を更新する。
【０１１２】
このように、稼働期間割当部１０５は、１つのプロジェクトＰにおける１つのリソースに対応してステップＳ１０９としての減少リソース対応割当処理を実行する。
このリソース減少増加対応稼働期間割当処理の終了段階において稼働期間指数ＲＰは「０」または「０」未満の値となっている。この値は、稼働期間割当部１０５によりプロジェクト情報テーブル２２０における稼働期間指数格納部２２５に格納される。そして、このように格納された値は、次のループにおけるステップＳ１０７または、ステップＳ１１０の処理において、稼働期間指数算出部１０４が稼働期間指数ＲＰを算出するのに利用する。
【０１１３】
［増加リソース対応割当処理の例］
次に、稼働期間割当部１０５がステップＳ１１２として実行する増加リソース対応割当処理の具体例について説明する。
まず、稼働期間割当部１０５は、プロジェクトＰに対応してこれまでに実行したステップＳ１０５〜Ｓ１１４の稼働期間割当のためのループ処理において、ステップＳ１０９の減少リソース対応割当処理が行われているか否かについて判定する。
このために、稼働期間割当部１０５は、タスク情報テーブル２４においてプロジェクト格納部２４２にプロジェクトＰを格納する各レコードの延伸期間格納部２４５を参照する。これらのレコードの延伸期間格納部２４５のいずれかに延伸日数の値が格納されていれば、稼働期間割当部１０５は、減少リソース対応割当処理が行われていると判定し、さらに、延伸されたタスクとその延伸日数も認識する。
【０１１４】
そして、減少リソース対応割当処理が行われていると判定した場合、稼働期間割当部１０５は、これまでの減少リソース対応割当処理によって延伸されたタスクを延伸前の期間に戻す（還元する）ための処理を実行する。
【０１１５】
具体例として、リソースＮを対象としてステップＳ１１２の増加リソース対応割当処理を開始するにあたり、プロジェクトＰにおけるチェーン、タスクの状態が図１１に示すものであったとする。この図１１は、先の図８〜図１１の説明から理解されるように、ステップＳ１０９の減少リソース対応割当処理によってリソース１が属するタスクが延伸された状態を示している。
【０１１６】
そこで、この場合の稼働期間割当部１０５は、図１１、図１０、図９、図８の順にしたがって延伸されたタスクにおける稼働期間を還元していく。また、稼働期間を還元していくごとに、稼働期間割当部１０５は、正の数の稼働期間指数ＲＰを、還元された稼働期間（日数）により減算していく。
そして、稼働期間割当部１０５は、この稼働期間の還元を、延伸されたタスクのすべてを延伸前の元の期間に戻る状態と、稼働期間指数ＲＰが「０」に到達する状態とのいずれかの状態となるまで実行する。
ここで、稼働期間指数ＲＰが「０」に到達する状態となった場合には、稼働期間割当部１０５は、この段階にてステップＳ１１２としての増加リソース対応割当処理を終了させる。
【０１１７】
これに対して、延伸されたタスクのすべてが延伸前の元の期間に戻るまで合流バッファ消費処理を行った段階で、未だ、稼働期間指数ＲＰが「０」より大きい場合には、余剰分の稼働期間が残存していることになる。
そこで、この場合の稼働期間割当部１０５は、合流バッファ消費処理後の稼働期間の残存分を以下のように削減する。
まず、稼働期間割当部１０５は、リソースＮ以外の（割り当て処理対象でない）リソースが属するリソース依存関係にあるタスクのうちから、以下の条件と優先順にしたがって選択する。
まず、タスクを選択する条件としては、「割り当て処理対象のリソースＮが属するタスクと重複する期間が存在しないタスクであること」である。また、優先順としては、クリティカルチェーンに属するタスクが最も高く、非クリティカルチェーンの場合には、合流バッファ消費率が高いチェーンほど優先順も高いというものである。また、タスクの期間が稼働期間指数ＲＰ以下のもののうちで長いほど優先順を高くするというものである。
【０１１８】
そして、稼働期間割当部１０５は、選択したタスクがリソースＮに属するものとなるように、リソースの割り当て（アサイン）変更を行う。そして、稼働期間割当部１０５は、リソースの割り当て変更を行ったタスクの期間に応じて稼働期間指数ＲＰを減算する。
また、稼働期間割当部１０５は、この割り当て変更に応じてチェーンを再構築する。そして、稼働期間割当部１０５は、この認識結果に基づき、新たに非クリティカルチェーンが形成された場合には、この非クリティカルチェーンの合流バッファの設定と、これに伴うプロジェクトバッファの変更を行うというものである。そして、稼働期間割当部１０５は、このようなタスクに対するリソースの割り当て変更を、稼働期間指数ＲＰが「０」になる、あるいは、リソース依存タスクが存在しなくなるまで繰り返し実行する。
【０１１９】
図１２〜図１４を参照して、上記のリソース割り当て変更の具体例について説明する。なお、この図の説明にあたり、割り当て対象はリソース２（Ｎ＝２）である。また、リソース割り当て変更を開始する段階での稼働期間指数ＲＰは「１０」であるとする。
【０１２０】
図１２は、リソースの割り当て変更前の段階におけるプロジェクトＰのタスク構成を示している。
この図に示すプロジェクトＰにおいては、タスク１〜５の５つのタスクが設定されている。また、タスク１〜５は、それぞれリソース１に割り当てられている。これらのタスク１〜５は、いずれもリソース１に割り当てられているので、リソース依存である。また、タスク１〜５によっては、１つのチェーンを形成するが、ここでは説明をわかりやすくすることの便宜上、プロジェクトＰは、このタスク１〜５のみにより形成されている。したがって、タスク１〜５から成るチェーンは、プロジェクトＰにおけるクリティカルチェーンである。
【０１２１】
また、タスク１〜５から成るクリティカルチェーンの工程期間は１８日である。これに応じて、プロジェクトバッファには、１８日の５０％である９日間を設定している。これにより、プロジェクトＰのプロジェクトバッファを含めた全工程期間は２７日である。
【０１２２】
この場合において、稼働期間割当部１０５は、前述のタスクを選択する条件と優先順にしたがって、以下のように割り当て変更対象のタスクを選択する。まず、この場合には、タスク１〜５から成る１つのクリティカルチェーンのみプロジェクトＰに存在しているので、このタスク１〜５が候補となる。そのうえで、タスクの期間が稼働期間指数ＲＰの値である「１０」以下の範囲において最大のものは、期間が６日のタスク３である。
そこで、稼働期間割当部１０５は、タスク３を選択する。そして、稼働期間割当部１０５は、この選択したタスク３に対してリソース１に代えて割当対象のリソース２を割り当てるように割り当て変更を行う。
【０１２３】
この割り当て変更に応じて、稼働期間割当部１０５は、図１３に示すようにプロジェクトＰにおけるチェーン構成を再構築する。
この場合、タスク３がリソース２に割り当てられたことにより、タスク３はリソース１に依存しなくなる。これにより、タスク３をクリティカルチェーンに含める必要はなくなる。
【０１２４】
そこで、稼働期間割当部１０５は、図１３に示すように、リソース１のリソース依存関係にある残る４つのタスク１、２、４、５により新たにクリティカルチェーンを形成する。この場合、４つのタスク１、２、４、５のうち、最も後のタスク２の終了期間は１２日目であるので、クリティカルチェーンの期間も、１８日目から１２日目に短縮される。これに応じて、稼働期間割当部１０５は、プロジェクトバッファについても、９日から、１２日の５０％の６日に削減するように変更する。これにより、プロジェクトバッファは、クリティカルチェーンに続けて、１３日目から１８日まで６日間として設定される。
【０１２５】
また、稼働期間割当部１０５は、クリティカルチェーンに含める必要のないタスク３を１つの独立した非クリティカルチェーンαとして設定する。これに応じて、稼働期間割当部１０５は、６日の非クリティカルチェーンαに対してその５０％である３日の合流バッファを設定する。
これに応じて、リソース２が属する非クリティカルチェーンα（タスク３）は、例えば４日目から９日目までの６日間に設定され、これに続けて、１０日目から１２日目までにおける３日間の合流バッファを設定する。
【０１２６】
そして、稼働期間割当部１０５は、上記のように６日間のタスク３にリソース２を割り当てたのに応じて、「１０」であった稼働期間指数ＲＰから「６」を減算することにより「４」に更新する。
【０１２７】
なお、このリソースの割り当て変更に際しても、上記のようにタスク構成や稼働期間指数ＲＰが変更されるのに応じて、稼働期間割当部１０５は、プロジェクト情報テーブル２２０、チェーン情報テーブル２３０およびタスク情報テーブル２４０などにおける所定の情報を更新する。
【０１２８】
続いて、稼働期間割当部１０５は、さらに図１３に示す段階においても、プロジェクトＰのスケジュールからリソース２を割り当て可能なタスクが存在するか否かを判定し、このようなタスクがあればそのうちから１つを選択する。
この場合にも、タスク１、２、４、５は、非クリティカルチェーンを形成するタスクである。しかし、タスク１、２、５の３つは、割当対象のリソース２が属するタスク３と重複する期間が存在する。割当対象のリソース２が属するタスク３と重複する期間が存在していないのは、タスク４のみである。
稼働期間割当部１０５は、この場合、リソース２を割り当て可能なタスクが存在すると判定し、前述の選択条件にしたがってタスク４を選択する。そして、この選択したタスク４にリソース２を割り当てるように割り当て変更を行う。
【０１２９】
そして、稼働期間割当部１０５は、上記の割り当て変更に応じて、図１４に示すようにプロジェクトＰにおけるチェーン構成を再構築する。
この場合には、タスク４がリソース１に依存しなくなるので、タスク４をクリティカルチェーンに含める必要はなくなる。
そこで、図１４に示すように、稼働期間割当部１０５は、リソース１のリソース依存関係にある３つのタスク１、２、５をつなげることで新たにクリティカルチェーンを形成する。この場合、３つのタスク１、２、５のうち、最後尾のタスク２の終了期間は１０日目となるので、クリティカルチェーンの期間も、１２日目からさらに１０日目にまで短縮される。これに応じて、稼働期間割当部１０５は、プロジェクトバッファについても、６日から、１０日の５０％である５日にまで削減するように変更する。これにより、プロジェクトバッファは、クリティカルチェーンに続く１２日目から１６日までの５日間として設定される。
【０１３０】
また、稼働期間割当部１０５は、クリティカルチェーンに含める必要のないタスク４を１つの独立した非クリティカルチェーンβとして設定する。これに応じて、稼働期間割当部１０５は、２日の期間の非クリティカルチェーンαに対してその５０％である１日の合流バッファを設定する。
この場合、稼働期間割当部１０５は、リソース２が属する非クリティカルチェーンβ（タスク４）については、例えば、同じリソース２が割り当てられた非クリティカルチェーンαと期間が重複しないように、１日目から２日目までの２日間に設定する。また、非クリティカルチェーンβ（タスク４）の合流バッファは、プロジェクトバッファの直前の１１日目に設定する。
【０１３１】
そして、稼働期間割当部１０５は、上記のように２日間のタスク４にリソース２を割り当てたのに応じて、「４」であった稼働期間指数ＲＰから「２」を減算することにより「２」に更新する。
【０１３２】
稼働期間割当部１０５は、図１４に示すチェーン構成において、さらに、リソース２に割り当て可能なタスクが存在するか否かについて判定する。この場合、図１４に示すチェーン構成においては、リソース１に依存するタスク１、２、５のいずれも、リソース２が割り当て済みのタスク３またはタスク４の少なくともいずれか一方と重複する期間がある。したがって、稼働期間割当部１０５は、これ以上、リソース１に割り当て可能なタスクは無いと判定する。
この判定結果に応じて、稼働期間割当部１０５は、ステップＳ１１２としての増加リソース対応割当処理を終了する。
【０１３３】
この場合、増加リソース対応割当処理の終了段階において稼働期間指数ＲＰは「２」であり、この値が、プロジェクト情報テーブル２２０における稼働期間指数格納部２２５に格納される。このように格納された値は、次のループにおけるステップＳ１０７または、ステップＳ１１０の処理において、稼働期間指数算出部１０４が稼働期間指数ＲＰを算出するのに利用する。
このように、稼働期間割当部１０５は、１つのプロジェクトＰにおける１つのリソースに対応してステップＳ１１２としての減少リソース対応割当処理を実行する。
【０１３４】
そして、図７のステップＳ１０４〜Ｓ１１４によるループ処理は、プロジェクトごとにすべてのリソースごとに繰り返される。これに応じて、バッファ消費率出力部１０６は、ステップＳ１１５により、プロジェクトＰのプロジェクトバッファ消費率を出力する。さらに、プロジェクトごとに対応してステップＳ１０４〜Ｓ１１７が繰り返されるごとに、バッファ消費率出力部１０６は、各プロジェクトのプロジェクトバッファ消費率を順次出力する。そして、最終的には、すべてのプロジェクトのプロジェクトバッファ消費率が出力されるものである。
【０１３５】
なお、本実施形態によっては、稼働期間割当部１０５の処理に応じて変化するプロジェクトやタスクの開始日と終了日も管理している。これにより、本実施形態は、例えばシミュレーション結果として、プロジェクトバッファ消費率だけではなく、プロジェクト、チェーン、タスクなどのスケジュールがどのように変更されるのかについても出力することができる。
【０１３６】
また、これまでの説明において、本実施形態のシミュレーション装置１００は、「日」を単位として管理してシミュレーションを行うこととしているが、例えば「時間」を単位とするなど、「日」以外の単位時間を管理してシミュレーションを行うようにしてよい。
【０１３７】
また、図１における各機能部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりシミュレーションを行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【０１３８】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【０１３９】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１４０】
１００  シミュレーション装置
１０１  操作部
１０２  稼働割当率変更部
１０３  変動稼働期間算出部
１０４  稼働期間指数算出部
１０５  稼働期間割当部
１０６  バッファ消費率出力部
１０７  記憶部
１０８  表示部
２１０  稼働割当率設定テーブル
２２０  プロジェクト情報テーブル
２３０  チェーン情報テーブル
２４０  タスク情報テーブル
【図１】
0005802611.tif 000002
【図２】
0005802611.tif 000003
【図３】
0005802611.tif 000004
【図４】
0005802611.tif 000005
【図５】
0005802611.tif 000006
【図６】
0005802611.tif 000007
【図７】
0005802611.tif 000008
【図８】
0005802611.tif 000009
【図９】
0005802611.tif 000010
【図１０】
0005802611.tif 000011
【図１１】
0005802611.tif 000012
【図１２】
0005802611.tif 000013
【図１３】
0005802611.tif 000014
【図１４】
0005802611.tif 000015