(57)【要約】  高効率かつ低コストのジョブスケジュールを、製作期間の代わりにコストを最適化し、利用に応じた変動を最小化するシステムおよび方法により提供する。スケジュールは、負荷レベラー（負荷平準化手段）２０２、コストミニマイザ（コスト最小化手段）１０４、およびマンパワープランナ（人的労働力計画手段）１０６を含むワークフロースケジュール化システムを用いて構築する。負荷レベラーは、リソース制限に影響を受ける製作期間を最短化し、次いで、リソース制限を下げ、平坦化スケジュールを作成するために処理を繰り返す。【選択図】  図１
2008522316.tif 000002
【特許請求の範囲】
【請求項１】
事業のための複数のタスクのスケジュールを生成するためのスケジュール化システムであって、少なくとも一つのタスクは、当該タスクを実行するために関連するリソースを利用するものであり、前記システムは、
前記事業の前記タスクを表すデータを受け取るとともに、該タスクを実行するために利用するリソースの変動に応じて該タスクの提案スケジュールを生成するよう構成した負荷平準化手段と、
前記負荷平準化手段と通信可能に結合し、前記提案スケジュールを評価して、それに関係するコストを見積もるコスト見積手段と、
前記リソース変動およびそれに関係するコストに応じて前記提案スケジュールを修正するために前記コスト見積手段と通信可能に結合されるコスト最小化手段と、
を備え、
前記負荷平準化手段は、前記事業のタスクの前記修正した提案スケジュールを表すデータを出力するように構成されることを特徴とするシステム。
【請求項２】
前記コスト見積手段は動的プログラミングを使用して実行されることを特徴とする請求項１のシステム。
【請求項３】
前記コスト見積手段はリニアプログラミングを使用して実行されることを特徴とする請求項１のシステム。
【請求項４】
前記負荷平準化手段が、前記タスクを完了させるよう、多くても最大リソース数を用いて最短タスクスケジュールを決定するよう構成された製作期間最小化手段を更に含み、前記タスクの内の少なくとも一つは、前記スケジュール内の前記タスクの配置についての少なくとも一つの制約を受けることを特徴とする請求項１のシステム。
【請求項５】
前記製作期間最小化手段が、スケジュールパッキングアルゴリズムを用いることを特徴とする請求項４のシステム。
【請求項６】
前記コスト最小化手段は、複数のタスクのそれぞれについて実行するよう構成された漸次改良エンジンを備え、前記各タスクは、複数の可能性のある開始時間を有し、前記タスクの開始時間は前記提案スケジュールについての最低の見積コストを生み出す請求項１のシステム。
【請求項７】
事業のタスクスケジュールを生成するためにコンピュータによって実行される方法であって、前記各タスクは、ゼロ又はそれ以上の関連するリソースを利用するものであり、前記方法は、
事業のタスクおよびリソースを表すデータを受け取るステップと、
前記タスクを実行するために利用するリソースの変動に応じて、前記事業のタスクの提案スケジュールを生成するステップと、
関係するコストを見積もるために前記提案スケジュールを評価するステップと、
前記リソース変動および前記コストに応じて前記提案スケジュールを修正するステップと、
前記事業の前記修正した提案スケジュールを出力するステップと
を備える方法。
【請求項８】
前記関係するコストを見積もるために前記提案スケジュールを評価するステップが、動的プログラミングモデルを使用することからなることを特徴とする請求項７の方法。
【請求項９】
更に、前記関係するコストを見積もるために前記提案スケジュールを評価する前記ステップが、リニアプログラミングモデルを使用することからなることを特徴とする請求項７の方法。
【請求項１０】
前記提案スケジュールを生成するステップが、ある制限を前記リソースのそれぞれと対応付けるステップと、前記各制限に応じて前記提案スケジュールを生成するステップとを含むことを特徴とする請求項７の方法。
【請求項１１】
前記提案スケジュールを生成するステップが、前記リソースの一つに対する前記制限を反復して減少させるステップと、前記リソースを負荷平準化するステップとを含むことを特徴とする請求項１０の方法。
【請求項１２】
前記提案スケジュールを評価するステップが、前記リソース変動と関係付けられたコストを決定するステップを含むことを特徴とする請求項７の方法。
【請求項１３】
前記リソース変動と関係付けられた前記コストが、リソース取得コスト、リソース処分コスト、リソース超過利用の漸増コスト、およびリソース未利用の漸増コストのグループの内の少なくとも一つを含む請求項１２の方法。
【請求項１４】
リソース取得コストが、雇用コストを含む請求項１３の方法。
【請求項１５】
リソース処分コストが、解雇コストを含む請求項１３の方法。
【請求項１６】
リソース超過利用の漸増コストが、超過時間を含む請求項１３の方法。
【請求項１７】
リソース未利用の漸増コストが、遊休リソースコストを含む請求項１３の方法。
【請求項１８】
前記提案スケジュールを生成するステップが、前記タスク毎の前記提案スケジュール内の許容ウィンドウを識別するステップと、前記許容ウィンドウ、前記タスクの優先度、および配置した前記タスクを有する前記提案スケジュールの少なくとも一部のコストに応じて、前記提案スケジュール内に各タスクを繰り返して配置するステップとを含む請求項７の方法。
【請求項１９】
前記提案スケジュールを評価するステップが、前記スケジュール内の前記タスクの許容配置を記述するウィンドウ内で前記タスクを移動させるのに応じて、前記提案スケジュールと関係付けられる前記コストを見積もるよう前記タスクの内の一つを検査するステップを含む請求項７の方法。
【請求項２０】
前記各リソースのプロファイルを用いて前記リソース変動を決定する請求項７の方法。
【請求項２１】
事業のスケジュール内の複数タスクの一つの配置を最適化して、前記スケジュールのコストを最小化するための方法であって、前記方法は、
前記タスクを記述するデータを受け取るステップと、
前記タスクに対して、前記スケジュール内の少なくとも一つの妥当な開始時間を決定するステップと、
前記タスクの妥当な開始時間毎に前記スケジュールのコストを見積もるステップと、
前記スケジュールの見積コストに応じて前記妥当な開始時間を選択するステップと、
前記選択した開始時間を前記タスクと関係付けるステップと、
前記タスクの前記選択した開始時間を出力するステップと
を具備し、前記タスクは少なくとも一つのリソースを使用し、前記各リソースはコストを有し、
前記タスクの妥当な開始時間毎に前記スケジュールのコストを見積もるステップが、
開始時間毎に前記タスクが用いる各リソースのコストを決定するステップと、
前記タスクが用いる各リソースのコストと、前記スケジュール内の他のコストとを合計することにより、開始時間毎に前記スケジュールのコストを推定するステップとを含む、
ことを特徴とする方法。
【請求項２２】
動的プログラミングモデルを利用して、タスクが用いる各リソースのコストを見積もる請求項２１の方法。
【請求項２３】
リニアプログラミングモデルを利用して、タスクが用いる各リソースのコストを見積もる請求項２１の方法。
【請求項２４】
事業のタスクスケジュールを生成するためのスケジュール化システムであって、少なくとも一つのタスクは、前記タスクを実行するために利用する関係リソースを有し、前記システムは、
前記事業のタスクの提案スケジュールを表すデータを受け取り、前記タスクの前記提案スケジュールを評価し、前記提案スケジュールと関係付けられる前記プロジェクトのコストを見積もるよう構成したコスト見積手段と、
前記コスト見積手段と通信可能に結合され、前記タスクを実行するために利用する前記リソースと前記事業の前記見積コストに応じて前記提案スケジュールを修正し、かつ前記提案スケジュールを表すデータを出力するよう構成されたコスト最小化手段と
を備えるスケジュール化システム。
【請求項２５】
前記コスト見積手段が動的プログラミングを用いて実行されることを特徴とする請求項２４のスケジュール化システム。
【請求項２６】
前記コスト見積手段がリニアプログラミングを用いて実行される請求項２４のスケジュール化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０００年１２月１２日出願の仮特許出願第６０／２５５，０８３号の利益を主張し、全文を引用して本明細書に組み込む。
【０００２】
本発明は、一般に、複雑なジョブをスケジュール化することに関し、より詳細には、ジョブ完成までのコストを最小にするスケジュール化のシステムおよびプロセスに関する。
【背景技術】
【０００３】
現代では、多岐にわたる複雑なプロジェクトが世界市場の至る所で実行されている。これらプロジェクトには、その全体規模の大きさゆえに、かなりの計画性および体系化が必要とされている。例えば、建物を建設するには、単に建設するというだけではなく、企画から始めて、設計図を描き上げ、プロジェクトが終了するまでの各段階で作業し、途中で何百もの障害を乗り越える必要がある。実際の構築自体についても、あらかじめ十分に計画しておかなければならない。例えば、ある構築プロジェクトの特定局面は、順序を誤れば完成させることができない。船を建造する場合、船に塗装するのは船体を構築するまでできない。エレベータは、エレベーターシャフトがない限り建物に組み込むことができない。これらは２つの単純な例であるが、いうまでもなく、大規模構築に関わるプロジェクトであれば、このような制約が何百何千と存在している。この問題は、構築空間以外の問題にまで更に普遍化することができる。事実、リソース利用に特定の制約を有する何らかの大規模プロジェクトでは、それが構築、生産、またはコンピュータープログラム実行であっても、プロジェクトのコストを管理するために、よく練られた何らかのスケジュールに従って、これらリソースを効率的に配置することが必要である。
【０００４】
最近では各種の自動スケジュール化技法が開発されている。これらの技法は、スケジュール化問題を減少させて「制約充足問題（ＣＳＰ）」に帰して、各種のＣＳＰ技法の内の一つを問題解決に適用することにより実行することが多い。例えば、引用して本明細書にその内容を組み込むＧｉｎｓｂｅｒｇ他の米国特許第６，０７０，１４４号、「有限の矛盾探索を用いるジョブスケジュール化のためのシステムおよびプロセス」、およびhttp://www.ri.cmu.edu/people/smith_stephen.htmlにあるＩＣＬ研究所、シニアリサーチサイエンティスト、Ｓｔｅｐｈａｎ Ｓｍｉｔｈの論文を参照のこと。実際には、これら技法は全て、対象のスケジュールの「製作期間」、すなわち、ジョブを全て完了するのに要する時間を最短にするよう設計している。場合によっては、例えば、マイクロソフトのプロジェクトソフトウエアにある「リソース平均化」ツールが実行するような、ジョブ処理中に利用するリソースを平均化する試みがなされる。しかし、典型的には「負荷平均化」技法は、製作期間を最短化する探索アルゴリズムに対する誤称にすぎない。例えば、コロラド州ＢｏｕｌｄｅｒのＡｒｔｅｍｉｓ Ｍａｎａｇｅｍｅｎｔ Ｓｙｓｔｅｍの市販スケジューラであるＡｒｔｅｍｉｓの負荷平均化オプションは、所定のリソース制限をユーザが規定する必要がある。ユーザ規定の制限を受け入れるスケジュールが見付からない場合、スケジュールの期限を必要に応じて遅らせる。
【０００５】
実際には、構築中に用いるリソースの合計コストを最小化する真の最適化目標に対して、スケジュールの製作期間最短化が代役となることが多い。例えば、労働コストを考えてみる。このコストは、Ｌaとして表されるスケジュール自体にあるタスクの実労働コストと、何かの作業を待機して遊休状態にある作業者を抱えるのに関わるコスト、またはプロジェクト完成にもはや必要ない作業者を雇用したり、および／または解雇したりする、Ｌiとしてシンボル化できるコストとを合わせた関数である。プロジェクト完成の全合計コストＬは、実作業コストと、雇用およびレイオフ、遊休作業者および超過時間と関係付けられる「間接」コストとの組み合わせ、すなわち、Ｌ＝Ｌa＋Ｌiとなるのが典型的である。
【０００６】
一般的に考えられているのは、短期間スケジュールは作業者が遊休状態にある時間が少ないので、すなわち、Ｌiの値が小さいので、製作期間最短化によりコストが最小になるスケジュールがもたらされるということである。しかし、製作期間最短化であっても、得られたスケジュールには、無駄なコストおよび不要なコストを招く大量の非効率が依然として存在することがある。例えば、短かすぎるスケジュールは、作業をそのような短時間で完了するのに必要な作業者の追加雇用コストを招くことになるかもしれず、またはもっと一般的には、作業努力の不必要な変動の要因となる（またはその防止に失敗する）かもしれない。リソースの最大使用量を下げることすら、リソース使用量の変動とそれに関係するコストを最小化するとは限らない。例えば、特定リソースについて最大リソース使用量を２０名に下げたと仮定する。スケジュールは、ある日は２０名、翌日は２名となるかもしれないので、かなりの非効率を招くことになる。
【０００７】
僅かな非効率でもかなりの高コストを意味することがある。５００百万ドルの原子力潜水艦の建造費の１％コスト増は、５百万ドルとなり、無視できない。
【０００８】
従って、必要とされているのは、単純な製作期間最短化スケジュールを用いる方式を含む現行システムと比較して、効率向上、ひいては財務的節減が得られるワークフロースケジュールを作成するためのシステムおよび方法である。
【発明の開示】
【０００９】
本発明により、現行システムと比較的して効率向上および低コストがもたらされるジョブスケジュールのためのシステムおよび方法が提供される。
【００１０】
実際、主な最適化基準を、スケジュールの期間の長さからジョブ完成コストに変更すると、コストがかなり低減できる。しかし、コストの最適化には、従来はいずれも指向していない二つの別々の挑戦が必要である。
【００１１】
第１に、プロセスには、製作期間の最短化だけではなく、リソース利用の変動を最小化することも必要である。これらのプロセスは、既存の製作期間ミニマイザの有効性を利用してもよく、または想定している最適化目標を有する新規プロセスを用いてもよい。本発明はこれら両方による。
【００１２】
第２に、上記プロセスにより生成されたスケジュールを評価してその合計コストを決定する必要がある。これには、スケジュールを作成し、雇用／解雇、遊休および超過時間の追加コストを最小化する最適化リソースの利用可能性を識別して、スケジュールと関係付けられる最適化リソース使用量を決定することができる効果的なツールの開発が必要である。「リソース」（resource: 資源）は、本説明では概ね肉体労働力、すなわち労働者、を指すよう用いるが、取得、使用、および／または放出に関係するコストを有する任意のリソースが考慮に値する。同様に、「コスト」は金銭的用語で計量されることが多いが、言うまでもなく、金銭的であろうとなかろうと、定量的なコストを、本明細書で説明するように最適化できる。
【００１３】
本発明の実施の形態によれば、負荷レベラー、コストミニマイザ、およびマンパワープランナを含むワークフロースケジュール化システムを用いてスケジュールを構築する。負荷レベラーは、リソース制限の影響を受ける製作期間を最短化する。これらの制限を下げ、プロセスを繰り返す。得られるのは、「平坦化」スケジュール、すなわち、極端なリソース使用量の振れが少ないスケジュールである。コストミニマイザは、初期解決策（叩き台）を生成し、次いで、マンパワープランナを用いてそれを漸次改良して、可能性のある別の解決策を評価し、それにより、探索を誘導する。マンパワープランナは、所与のスケジュールに対して、基本コスト、雇用コスト、解雇コスト、超過時間、および不足時間を含む合計コストを最小化するよう最適な雇用／解雇を決定する。一実施の形態では、マンパワープランナは、動的プログラミングを用いて実装する。代替の実施の形態では、リニアプログラミングを用いて実装する。マンパワープランナは、コストミニマイザの一部として用いられ、負荷レベラーの最終結果を分析および評価するのに用いることもできる。
【００１４】
一実施の形態では、全体のスケジュールは、負荷レベラーにより以下のように展開する。すなわち、リソース制限の初期セットを負荷レベラーに渡し、次いで、負荷レベラーは、これらの制限に適合するスケジュールを作成するよう試みる。そのようなスケジュールが作成された場合、リソース制限を減少させ、負荷レベラーを再度呼び出す。許容する時間内に完了すべきタスクに対してあまりにもリソース制限が少なくて、負荷レベラーが妥当なスケジュールを見付けることができなくなるまで、このプロセスを繰り返し、その時点で、前回の妥当なスケジュールを初期スケジュールとして用いる。
【００１５】
代替として、コストミニマイザのシード生成手順を直接呼び出すことができる。これは、全てのタスクを対応ウィンドウ内部で実行して実証しなければならないという性質を有する、スケジュール内の各タスクに対する許容ウィンドウを識別することにより進行する。タスクの実行が関係ウィンドウより早い場合、所与のタスクの先行オペレーション全てを完了させる時間が十分になく、タスクの実行が関係ウィンドウより遅い場合、スケジュールの期限前に後続のタスクを完了させる時間が十分にないことを示すことができる。
【００１６】
次いで、タスクを優先順位で選択し、部分的なスケジュールの合計コストが最小化されるように、それぞれのタスクを関係ウィンドウ内でスケジュール化する（以下に説明するマンパワープランナを用いて）。これらの残りのウィンドウは縮小され、全てのタスクがスケジュール化されるまで、プロセスが繰り返される。
【００１７】
初期スケジュールを構築した後、コストミニマイザの漸次改良手順により、そのスケジュールを一回以上評価する。そのタスクを許容ウィンドウ内のどこかに移動すると合計コストがどれ位減少するか、を調べるために、この構成体は、それぞれのタスクをマンパワープランナと協調して検査するよう動作する。次いで、タスクを適切に再配置して最良結果が得られるスケジュールを達成する。タスクを適切に再配置した後、他のタスクに対するウィンドウを、そのタスクの新規位置に基づいて調節する（そのタスクの新規位置に応じて、他のウィンドウを縮小、拡大するか、またはその両方とする）。プロセスは、固定回数の繰り返しの後、またはそれ以上の改良が不可能な場合等の、所定の規則のセットに従って、最終スケジュールを得て終了する。
【００１８】
一実施の形態では、最終スケジュールを用いて最適化問題を作成するよう負荷レベラーがマンパワープランナを用いる。この問題には、時間関数として要求されるリソースの利用可能性、および何らかの特定リソースプロファイルのコストに関する情報が含まれる。このコストは、各リソースの使われ方が、効率的か、遊休か、超過時間であるかの時間量、各リソースが最初に利用される時間量、または各リソースがスケジュールによりもはや不要である時間量を追加することにより得られる。他の実施の形態では、他の動作条件、例えば、作業者の超過時間が５０％に制限されるとか、または作業者が金曜日だけ雇用または解雇できるという条件を規定する追加制約が利用される。
【００１９】
次いで、マンパワープランナは、リソース使用に対する最適計画、例えば、スケジュールの日毎に何人の作業者を雇用すべきかのプロファイルを計算する。マンパワープランナは、この最適作業者プロファイルを用いてスケジュールのコストを計算し、その結果を元のスケジュール問題に対する最小コスト解決策の候補として提示する。より一般的には、リソースが作業者以外の何かである場合、プランナーは、そのリソースを取得、放出するための最適プロファイルを計算する。
【００２０】
好ましい実施の形態では、初期のシード生成手順中に各タスクの配置を導くようコストミニマイザがマンパワープランナを用いる。次いで、図４および図５を参照して以下に説明するように、漸次改良手順のステップ毎にマンパワープランナが呼び出される。
【００２１】
このような方法で、本発明は、対象のプロジェクト（事業）に対するリソース（資源）の最適な全体配置を有するスケジュールを作成する。
【００２２】
この概要で説明した特徴および利点ならびに以下の詳細な説明は、全てを包括しているとは限らず、詳細には、多くの付随的な特長および利点が当該分野の技術者には明らかであろう。更に、留意すべきは、本開示で用いる用語は、原則として読解性および説明目的から選択されていて、発明性のある主題を描写または限定するよう選択されてはいないので、このような発明性のある主題を判定するにはクレームに依拠する必要があるということである。
【００２３】
【００２４】
【００２５】
【００２６】
【００２７】
【００２８】
【００２９】
【００３０】
【発明を実施するための最良の形態】
【００３１】
以下に示す説明では、本発明の完全な理解を提供するために、説明を目的として特定の詳細について述べる。当該分野の技術者には言うまでもなく、本発明はこれら特定の詳細説明がなくても実践することができる。特に、当該分野の技術者には言うまでもなく、本明細書で説明する方法は、説明する実施例以外の装置、システムおよびソフトウエアで実施できる。他の例では、本発明の説明を容易にするために、従来の、または周知の構造、装置、方法および技法を略図で参照し、またはブロック図形式で示す。
【００３２】
本発明は、機械（コンピュータ）により実行可能なソフトウエア命令で実施できるステップを含み、一つ以上のプロセッサがそのような命令を実行する結果として実施される方法ステップを含む。他の実施の形態では、ハードウエア要素を、ソフトウエア命令の代わりに、またはソフトウエアと組み合わせて利用して、本発明を実施する。ソフトウエア命令は、ＲＡＭもしくはＲＯＭまたはリムーバブルメディアを含む他のメディアに格納してもよい。
【００３３】
図１を参照すると、本発明の実施の形態によるシステムのブロック図が示されている。システム１００には、負荷レベラー（負荷平準化手段）２０２、コストミニマイザ（コスト最小化手段）１０４、マンパワープランナ（人的労働力計画手段）１０６、リソース制限データベース１０８、タスクデータベース１１０、および制約データベース１１２が含まれる。一実施の形態では、これらの構成体はそれぞれ、単一のコンピューターシステム上に常駐している。代替の実施の形態では、システム１００の各種構成体を多数のコンピューターシステム上に常駐させ、例えば、ネットワーク上で通信してもよい。
【００３４】
負荷レベラー（負荷平準化手段）２０２には、リソース制限およびタスク制約の影響を受ける所与のスケジュールの製作期間を最短化するための論理式が含まれる。負荷レベラー２０２の動作を、図２と関連させて以下に更に説明する。コストミニマイザ（コスト最小化手段）１０４は、初期解決策を生成し、次いで、マンパワープランナ（人的労働力計画手段）１０６を用いてそれを漸次改良して、可能性のある別の解決策を評価し、それにより探索を誘導する。マンパワープランナ１０６は、所与のスケジュールについて、基礎コスト、雇用コスト、解雇コスト、超過時間、および不足時間を含む合計コストを最小化するよう、最適な雇用／解雇決定を計算する。マンパワープランナ１０６は、二つの代替方法で、すなわち動的プログラミングまたはリニアプログラミングを用いて実装する。マンパワープランナ１０６は、コストミニマイザ１０４の一部として用いられ、負荷レベラー２０２の最終結果を分析および評価するのに用いることもできる。
【００３５】
図２を参照すると、製作期間ミニマイザ（製作期間最小化手段）２０８への複数回の呼出しにより、初期スケジュール２１０を作成する負荷レベラー２０２が示されている。負荷レベラーが製作期間ミニマイザに渡す入力には、１セットのタスク２０６、リソース制限２０４、および１セットの制約２１２が含まれる。タスク（仕事又は作業）および制約については以下に更に説明する。
【００３６】
図３を参照すると、タスク３００のダイヤグラムが示されている。タスク３００は、プロセスを首尾よく完結するために完了しなければならないワークフロープロセス（作業流れ工程）内のステップである。例えば、作成されるスケジュールが船舶建造のためのスケジュールである場合、幾つかのタスクには、溶接、塗装、電気作業完了等が含まれることになる。好適な実施の形態では、それぞれのタスクは、関係する期間３０２、およびリソース要件３０４を有する。タスクは、以下に更に説明するように、特定の制約を受けることがある。タスクの期間３０２は、そのタスクが完了するまでに要する、例えば、時間単位で表される期間である。他の実施の形態では、日数、週数、または他の単位で期間を示す。リソース要件３０４は、そのタスクを実行するのに必要な作業者（または他のリソースユニット）の人数を表す。
【００３７】
好適な一実施の形態では、タスクは以下のレイアウトにより設定される。
AMR001B,896,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1396,0,0,0,0,0,0,0,0,0,0,14956,13806,0,0,0,0,0,0,0,0,0,0,0,0,21083,6708,0
【００３８】
上記実施例では、タスクフォーマットは、タスクＩＤ、そのタスクを完了させるのに必要な合計時間、リソース１の必要量、リソース２の必要量、．．、リソースｎの必要量であり、ここでｎは、利用可能なリソースグループの合計数である。従って、この実施例では、タスクＡＭＲ００１Ｂは、完了までに８９６時間を要し、コンマで区切られたフィールドに記入された非ゼロで識別されるグループと対応するリソースを必要とする。
【００３９】
タスクは、タスクデータベース１１０に格納される。好適な実施の形態では、制約データベース１１２は、どのタスクが制約を受けるかを示すデータを格納する。一実施の形態では、制約は以下の形式をとる。
【００４０】
制約を受けるタスクのＩＤ、制約を与えるタスクのＩＤ、制約の種類、制約の値。
【００４１】
一実施の形態では、可能性のある制約の種類は、開始−開始制約、開始−終了制約、終了−開始制約、および終了−終了制約である。一実施の形態では「ＳＳ」値でシンボル化される開始−開始制約は、制約を与えるタスクが開始された後のある時間まで、制約を受けるタスクが開始できないことを意味する。その時間量は制約値により規定される。開始−終了制約（「ＳＦ」でシンボル化）は、制約を与えるタスクが開始された後のある時間まで、制約を受けるタスクが、終了できないことを意味し、上記同様、要求される遅延は制約値により指示される。同様に、「ＦＳ」は終了−開始制約を表し、制約を与えるタスクが終了した後のある時間に、制約を受けるタスクを開始しなければならず、「ＦＦ」は、制約を与えるタスクが終了した後のある時間に、制約を受けるタスクを終了しなければならことを指示する。上記同様、これら二つの制約の種類に要求される適切な時間は制約値により指示される。好適な実施の形態では、制約値は時間単位で表される。他の実施の形態では、制約値は他の単位で表される。例えば、「ＡＭＲ００１Ｂ、ＡＭＳ０２０Ａ、ＳＳ、３６０」は、好適な実施の形態では、妥当な制約であり、タスクＡＭＳ０２０Ａの開始後３６０時間までＡＭＲ００１Ｂは開始できないという制約を、ＩＤ ＡＭＲ００１Ｂを有するタスクが、タスクＡＭＳ０２０Ａにより受けることを示す。
【００４２】
タスクの設定に加えて、負荷レベラー２０２は、ユーザまたは事前のスケジュールを含むファイルから、１セットのリソース制限２０４を入力として受け取る。リソース制限は、各リソースグループ内のリソースの最大利用可能数を規定する。リソースグループにより、異なる種類のリソース、例えば、溶接工、塗装工等が識別される。
【００４３】
図６を参照すると、負荷レベラー２０２は、タスク２０６のセット、リソース制限２０４、および制約２１２のセットを用いて、製作期間ミニマイザ２０８を呼び出して（６０２）、要求されるタスクをそれぞれ完了し、タスクと関係する制約をそれぞれ満たし、リソース制限が提供する以上のリソースを使用しない初期ワークフロースケジュール２１０を作成する。一実施の形態では、製作期間最短化は、従来より周知のスケジュールパッキング（詰め込み）アルゴリズムを用いて行われる。製作期間ミニマイザ２０８が、この初期スケジュール２１０を完了（６０４）させると、負荷レベラーは、下記に説明するように、リソース制限２０４を下げて（６０６）、製作期間ミニマイザを再呼び出し（６０２）して、新スケジュールを作成する。
【００４４】
負荷レベラー２０２は、絶対リソース制約、または事前のスケジュールから初期リソースレベルを得る。これらの初期リソースレベルは、リソース使用に対する上限として機能する。次いで、負荷レベラー２０２は、各リソース制限（６０６）を個々に下げることにより下限を探索し、他のリソースは上限のままにしておく。一実施の形態では、図６に示すように、この探索は二進法探索法を用いて行われる。製作期間ミニマイザが妥当なスケジュールを返す（６０４）ことができなくなるポイントまで個々のリソースを減少（６０６）させると、妥当なスケジュールが作成されるか、またはリソースが上限に達するまで、リソース制限を漸増（６０８）させる。例えば、二進法探索アルゴリズムを用いるとき、あるリソースの開始レベルが１６の場合、負荷レベラー２０２は、レベル８への減少を最初に試みる。製作期間ミニマイザ２０８が、８で解決策を見いだせる場合、負荷レベラー２０２は、次いで４を試みる。８で解決策を見いだせない場合は、次いで１２を試みる等である。他の実施の形態では、他の探索アルゴリズム、例えば、漸次修正法を用いてもよい。これらのステップをリソース毎に繰り返して（６１０）、全ての下限を決定する。
【００４５】
次に、負荷レベラー２０２は全てのリソースを下限に設定（６１２）し、次いで、全てのリソースを一定量だけ増加（６１４）させ（但し、どのリソースも上限を超えて増加させない場合を除いて）、製作期間ミニマイザを呼び出して（６１６）妥当なスケジュールを探す。これを製作期間ミニマイザ２０８が解決策を見付けることができるレベルになるまで（６１８）繰り返す。
【００４６】
最後に、負荷レベラー２０２が、どれかリソースを取り出して、一定量だけそれを低下させるよう試みて（６２０）、新しいレベルでの解決策がまだあるかどうかを調べる（６２２）。そのような解決策がある場合、リソースをこの低下させたレベルのままとし（６２４）、解決策がない場合、リソースの設定を旧のレベルに戻す（６２６）。このプロセスを改良の可能性がなくなるまで（６２８）、様々なリソースについて繰り返し、初期スケジュールを返す（６３０）。現在のレベルが二進法探索法を用いて決定された下限から最も遠いリソースに対して優先権が与えられる。
コストミニマイザ
【００４７】
図４および図７を参照すると、負荷レベラー２０２の代替として、コストミニマイザのシード生成手順４０２を用いて、初期スケジュールを作成することもできる。
【００４８】
コストミニマイザ１０４には、順次改良される初期スケジュールを作成するシードジェネレータ４０２が含まれる。コストミニマイザ１０４は、負荷レベラー２０２を参照して上記説明したのと同様に、タスク２０６のセットを入力として受け取る。シードジェネレータ４０２は、タスクセット２０６からタスク３００を選択（７０２）し、選択した各タスク（７０６）に対するタスクウィンドウを創出（７０４）する。タスクウィンドウは、タスクに対して妥当な開始時間を特定するものであり、或る条件と調和する最大ウィンドウである。好適な実施の形態では、これらの条件は、タスクデータベース１１０に格納され、リリース時間（タスクに対する最も早い妥当な開始時間）、タスク納期（タスクの最も遅い妥当な終了時間）、および各タスクの優先順位を含む。次に、シードジェネレータ４０２は、あるタスクを選択（７０８）してマンパワープランナ１０６に送る。好適な実施の形態では、ウィンドウサイズが大きくなる順序でタスクをマンパワープランナ１０６に送る。他の実施の形態では、タスクをマンパワープランナ１０６に送る順序は、タスク長、後継タスク（すなわち、所与のタスクの後に、開始または終了するよう制約を受けるタスク）の数、リソース使用量（リソースの量または数）、前回スケジュールから割り当てられた値、またはランダム順を含む他の基準に従ってもよい。マンパワープランナには、１セットのリソースコスト４０６、すなわち、各リソースグループ内の各リソースのコスト、が追加提供される。一実施の形態では、コストはユーザが入力し、別の実施の形態では、あるファイルからもたらされる。コストは、各種の作業者、雇用、超過時間等に支払う実コストを表す。マンパワープランナは、許容されるウィンドウ内でタスクを開始し、完了させるように、対象となるタスクの開始時間を選択する（７１０）。次いで、部分的なスケジュールのコストを、タスクの選択開始時間に基づいて決定する（見積もる）（７１２）（スケジュール化すべき他のタスクのコストは無視する）。次いで、ウィンドウ内の新規開始時間にタスクを移動し、コストを再計算する。好適な実施の形態では、タスクウィンドウ内の妥当な開始時間毎に、このプロセスが繰り返される（７１４）。次いで、完成したスケジュールのコストおよび関係開始時間を、シードジェネレータ４０２に返す（７１６）。次いで、シードジェネレータ４０２は、タスクに開始時間を割り当てる（７１８）。好適な実施の形態では、この開始時間は、マンパワープランナ１０６が報告するように、ワークフロースケジュールの合計コストを最小化する開始時間である。同点の場合、同点の開始時間のどちらをそのタスクに割り当てるかについてはランダムに選択する。他の実施の形態では、何らかの他の方法、例えば、時間的に最初、時間的に最後等、により同点に差をつける。また更に他の実施の形態では、多数のスケジュールを生成する。コストミニマイザのシード生成手順は、初期の割り当ての幾つかをランダムに行うので、多数のスケジュールを生成することにより、様々な程度のコストを有するスケジュールが得られ、最も低価格のものを選択することができる。
【００４９】
各タスクに妥当な開始時間が割り当てられるまで（７２０）、タスクセット内の各タスクについてこのプロセスを継続する。この時点で、完全な初期スケジュール２１０が生成されて、漸次改良エンジンに渡される（７２２）。
【００５０】
図５および図８を参照すると、コストミニマイザの漸次改良エンジン５０２の動作のブロック図が示される。コストミニマイザ１０４の漸次改良エンジン５０２は、好適な一実施の形態ではシードジェネレータ４０２により、または代替の実施の形態では負荷レベラー２０２により作成された初期スケジュール２１０を、受け取る（８０２）。他の実施の形態では、スケジュールを他の方法で作成してもよく、または外部から供給してもよい。漸次改良エンジン５０２は、初期スケジュール２１０からタスクを選択し（８０４）、そのタスクをマンパワープランナ１０６に供給する。手順により各フルパスはタスク毎に処理されるので、タスクは、ランダムに選択するか、または任意の順序で選択してもよい。マンパワープランナ１０６は、タスクについて開始時間を選択し（８０６）、その開始時間、および他の妥当な開始時間（８１０）毎に、シードジェネレータ４０２を参照して上記説明した方法と同様に、スケジュールのコストを決定する（見積もる）（８０８）。但し、マンパワープランナ１０６は、一部だけのスケジュールに代わって、全体スケジュール（初期スケジュール）にアクセスできるので（初期スケジュールを形成していた場合と同様に）、マンパワープランナは、どの開始時間がスケジュールの全体コストを最小化するのかについて、より良好な決定ができる。
【００５１】
マンパワープランナ１０６は、妥当な開始時間、および妥当な開始時間毎のタスク開始と関係する合計ワークフロースケジュールコストのリストを添えてタスクを漸次改良エンジン５０２に返す（８１４）。一実施の形態では、マンパワープランナ１０６が、可能性のあるそれぞれの開始時間について合計コストを評価する。他の実施の形態では、マンパワープランナは、漸次改良エンジン５０２が渡す元の開始時間の特定の時間フレーム内、例えば、４日間、に発生する妥当な開始時間、およびある部分のランダムサンプリング、例えば、残りの妥当な開始時間の１０％、を評価するだけである。更に他の実施の形態では、ワークフロースケジュールの合計コストについて様々なサンプルを評価する。
【００５２】
漸次改良エンジン５０２が、あるタスクに対する様々な妥当な開始時間のコストを受け取ると、好適な実施の形態では、漸次改良エンジンは、最小合計コストと関係する開始時間をそのタスクに割り当て（８１６）、次いで、スケジュール内の各タスクについてプロセスを繰り返す。別の実施の形態では、漸次改良エンジンは、現在の開始時間から遠く離れた開始時間に対する優先権の度合いを提示する。このために、漸次改良エンジン５０２は、実際コストを受け取り、次いで、タスクの開始時間変化の絶対値を乗じた一定値を減算することにより調整コストを計算する。次いで、この調整コストを最小化する時間にタスクを再スケジュール化する。この優先権は、焼きなましに類似した処理の中でやがて減少する。実施の形態によっては、ケース毎に最小コストの解決策を探す上記説明の純粋な「欲張り」最適化プロセスの一つ以上のパスの替わりに、離れた開始時間に対するこの優先権が代替して用いられる。この選択方法の利点は、ローカルの最小化（合計スケジュールコストに関して）を生じるが、グローバルの最小化を生じない開始時間の割り当てを避けることにある。
【００５３】
開始時間がそれぞれのタスク３００に割り当てられ（８１８）、かつ著しい節減（８２０）が達成された場合、漸次改良エンジン５０２は、そのタスクを再度処理（８２４）して、スケジュールを更に改良する。すなわち、それぞれのタスクを次にマンパワープランナ１０６に送って、そのタスクに対する全ての妥当な開始時間と関係する最小コストを決定する。漸次改良プロセスを繰り返すと、漸次改良エンジン５０２が後で順に評価するタスクへの開始時間割り当てが、初期に評価されたタスクを再最適化して更に節減を生み出せるという利点が得られる。このように、漸次改良エンジンは、好適な実施の形態では、タスクのセット全体に幾つかのパスを実際に作製する。漸次改良エンジンは、更なる著しいコスト節減が得られなくなる（８２０）までタスクのセットの評価を続ける。好適な実施の形態では、タスク全体を見渡した後のコストの改良率（または絶対的な改良値）がユーザ規定のある閾値未満の場合、節減の意味がないと見なされる。他の実施の形態では、漸次改良エンジンは、所定の時間の間、最適化を継続し、次いで、その時間経過の最後に見付けた最良のスケジュールを出力する。
【００５４】
漸次改良エンジン５０２が最適化を完了させると、最適化ワークフロースケジュール５０６を出力する（８２２）。好適な実施の形態では、ワークフロースケジュール５０６は、開始時間および終了時間を添えて各タスク３００をリストに挙げる。開始時間は、好適な実施の形態では、プロジェクト開始時間が始まって以降の時間単位で報告される。サンプルのスケジュール５０６は以下のようになる。
【表１】
2008522316.tif 000003
【００５５】
上記サンプルでは、各タスクは「タスクコード」で表され、開始時間および停止時間は、それぞれ「開始時間」、「終了時間」としてリストアップされる。従って、例えば、タスクコードＷＰＮ２８６Ｔを有するタスクは、２００１６時間に開始し、２１３４４時間に終了するようスケジュール化される。
【００５６】
ワークフロースケジュールの合計コストを決定する際には、マンパワープランナ１０６は、多くの同一計算を繰り返すことがある。一実施の形態では、マンパワープランナは以下の形式の中間結果を決定することにより、動作効率を更に改良できる。（１）現時点で所与のリソースレベルを仮定した場合の、スケジュール開始からある時点までの最適合計コスト。（２）現時点で所与のリソースレベルを仮定した場合の、ある時点からスケジュール終了までの最適合計コスト。これらの計算は、ある時点の結果が、以前の時点の結果（１の場合）または後続の時点の結果（２の場合）を使用するので効率的である。
【００５７】
好適な実施の形態では、移動するタスクに対して、先のパラグラフで説明した最適コスト計算は、全ての関連する時点について、対象とするタスクに対するリソースを省略して上記決定を行う。すなわち、コスト（そのタスクなしの）は、スケジュール始点から、タスクが開始されるかもしれない最も遅い時間まで計算する。同様に、コストは、スケジュール終了から、タスクが終了するかもしれない最も早い時間まで計算する。従って、このタスクの任意の特定の配置に対して、オプティマイザは、このタスクの前後に何が起きたかの完全な解析を既に有することになる。従って、任意の特定のタスク配置に対して、マンパワープランナ１０６は、タスク自体が進行する間のイベントを再解析するだけでよい。
【００５８】
一実施の形態では、マンパワープランナ１０６は、別の最適化を行う。上記説明の動的プログラミングアルゴリズムは、スケジュール始点から所与の時点までの（または同様に、所与の時点からスケジュール終了までの）最適コストを、この時点でのリソースレベルの関数として計算する。この計算は、それぞれの可能性のあるマンパワーレベルに対して行われるのが典型的なので、１時点あたりの計算量は、可能性のあるマンパワーレベルの数に比例する。実際には、マンパワーレベルのこの関数は、区分的に線形の関数であり、任意の関数ではない。従って、一実施の形態では、この関数をモデル化する特別な表現を用いる。その表現は、各変曲点における関数の値、および変曲点間の傾斜で表され、必要計算量が大きく減少する。
【００５９】
シードスケジュールを生成するプロセス、および引き続きこのスケジュールを漸次改良するプロセスは、何回も繰り返すことができる。一実施の形態では、シード生成手順の第１パス上で（上記説明のように）、タスクを順に処理し、各タスクを部分的なスケジュールの合計コストを最小化するウィンドウ内のそのポイントに配置する（現在および以前に割り当てられているタスクが用いるリソースに基づくが、まだ配置されていないタスクは無視する）。次いで、漸次改良エンジン５０２がこのスケジュールを改良する。一実施の形態では、次いで、以下のように、シードジェネレータ４０２に対する次回呼び出しで、得られたスケジュールを用いる。タスクがシードジェネレータ４０２に対する後続の呼び出しにより配置されている場合、システム１００は、現在および以前に配置されたタスクだけでなく、まだ配置されていないタスクのリソースも考慮する。まだ配置されていないタスクに対して、システム１００は、漸次改良エンジン５０２の最終スケジュールからそれら位置に配置されると仮定する（近似として）。このプロセスの一利点は、「先を見越す」ことにあり、シードジェネレータが将来のタスクの可能性のある位置に基づいて、タスク配置を最適化できる。
【００６０】
本発明は、引用して本明細書に組み込む所の米国特許第６，２７２，４８３号、名称「コスト最適配置システムおよび方法」、に開示されているような別の最適化技法も用いて、スケジュールを更に改良する。上記説明のように、シードジェネレータ４０２は、まず始めに、ウィンドウサイズが増大する順にタスクを処理することにより、初期スケジュール２１０を作成し、次いで、漸次改良エンジン５０２が、このスケジュールを漸次改良する。この全体プロセスは、何回も繰り返すことができるが、シードジェネレータ４０２がタスクを処理する順序は、タスクの経験的な重要性に基づいてその都度修正される。好適な実施の形態では、タスクの重要性は、タスクの有無によるスケジュールコストの差である。より重要なタスクは、優先度が低いものより優先度が高められる。これにより、シードジェネレータ４０２は、重要なタスクほど、良好なスケジュール化を実行することができる。代替の実施の形態では、このコスト差とタスクの理論的コスト（要求されるリソース使用量に基づく）との間の差が検査され、これはタスクの現在の配置に起因する分裂または相乗効果の尺度を提供する。理論的コストは、コスト／単位時間を乗算した時間であり、例えば、タスクが１００人・時間を必要とし、コストが３０ドル／時間の場合、理論コストは３０００ドルである。
【００６１】
当該分野の技術者には言うまでもなく、本発明は、その精神または基本特性から逸脱することなく、他の特定の形式で実施することができ、本発明またはその特徴を実施するメカニズムは、異なる名称または形式を有してもよい。従って、本発明の開示は、説明を意図するものであり、本発明の範囲を制限するものではない。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態によるシステムのブロック図である。
【図２】本発明の実施の形態による負荷レベラーを用いる初期スケジュールの構成を示す。
【図３】本発明の実施の形態によるタスクのダイヤグラムを示す。
【図４】本発明の実施の形態によるシードジェネレータおよびマンパワープランナを用いる初期スケジュールの構成を示す。
【図５】本発明の実施の形態による漸次改良エンジンおよびマンパワープランナを用いる最適化スケジュールの構成を示す。
【図６】本発明の実施の形態による負荷レベラーの動作を示すフロー図である。
【図７】本発明の実施の形態によるコストミニマイザのシード生成手順の動作を示すフロー図である。
【図８】本発明の実施の形態によるコストミニマイザの漸次改良エンジンの動作を示すフロー図である。
【図１】
2008522316.tif 000004
【図２】
2008522316.tif 000005
【図３】
2008522316.tif 000006
【図４】
2008522316.tif 000007
【図５】
2008522316.tif 000008
【図６】
2008522316.tif 000009
【図７】
2008522316.tif 000010
【図８】
2008522316.tif 000011
【国際調査報告】
2008522316.tif 000012