(57)【要約】アクティビティ群をスケジュールする方法が提供される。本方法は、指定された優先順位、ライフスパン、好ましいインプリメンテーション時間、そしてスケジューリング時間予算を有しているアクティビティを受け取ることを含む。スケジュールは、好ましいインプリメンテーション時間の使用可能度と使用できる実行時間の量を決定するためにサーチされる。アクティビティは、好ましいインプリメンテーション時間が使用可能であり、ライフスパンが使用可能な実行時間以内でれば、好ましいインプリメンテーション時間にスケジュールに挿入される。インプリメンテーション時間が使用できない場合またはライフスパンが使用可能な実行時間より長い場合、スケジュールは変更される。スケジュールの変更は、スケジュールされたアクティビティ群を同等以上の優先順位で保存する。本方法は、アクティビティがスケジュールされ、または経過スケジューリング時間がスケジューリング時間の予算を越えたとき退出する。【選択図】図なし【特許請求の範囲】
【請求項１】
指定された優先順位、ライフプラン、好ましいインプリメンテーション時間および、スケジューリング時間予算を有するアクティビティを受け取るステップと、
好ましいインプリメンテーション時間の使用可能度と使用可能な実行時間の量を決定するためにスケジュールをサーチするステップと、
好ましいインプリメンテーション時間が使用可能であり、ライフスパンが使用可能な実行時間以内でれば、好ましいインプリメンテーション時間にアクティビティを挿入するステップとを含み、
使用できないインプリメンテーション時間または使用可能な実行時間より大きいライフスパンに応じてスケジュールを変更する方法において、
スケジュールされたアクティビティを等しいまたはより大きい優先順位で保存し、
経過スケジューリング時間がスケジューリング時間予算を超過するときに前記方法を終了させるアクティビティをスケジュールする方法。
【請求項２】
スケジュールを変更する前記方法が、代りのインプリメンテーション時間をランダムに選択し、
使用可能な実行時間の量とブロッキングアクティビティの存在を決定するために代りの時間を照会し、
ブロッキングアクティビティの決定に応じて、スケジュールの異なったインプリメンテーション時間に移動し、使用可能な実行時間を増加させるようブロッキングアクティビティに要求し、
使用可能な実行時間をアクティビティのライフスパンと比較し、
ライフスパンが使用可能な実行時間以下のとき、ランダムに選択した代りのインプリメンテーション時間にアクティビティを挿入し、
使用可能な時間がライフスパンより小さいとき、アクティビティが挿入されるまであるいは、経過スケジューリング時間がスケジューリング時間予算を超過するまで、代りの実行時間のランダムな選択を繰り返すステップを含む請求項１記載のスケジューリング方法。
【請求項３】
前記アクティビティがさらに少なくとも１つ指定された必要なリソースを有する請求項１記載のスケジューリング方法。
【請求項４】
前記方法がコンピュータプログラムとしてコンピュータ読み取り可能な媒体に格納され、コンピュータによって実行されるとき、アクティビティをスケジュールするステップを実行する請求項１記載のスケジューリング方法。
【請求項５】
指定された優先順位、ライフプラン、好ましいインプリメンテーション時間および、スケジューリング時間予算を有するアクティビティを受け取るステップと、
好ましいインプリメンテーション時間の使用可能度と使用可能な実行時間の量を決定するためにスケジュールをサーチするステップと、
好ましいインプリメンテーション時間が使用可能であり、ライフスパンが使用可能な実行時間以内でれば、好ましいインプリメンテーション時間にアクティビティを挿入するステップとを含み、
使用できないインプリメンテーション時間あるいは、使用可能な実行時間より大きいライフスパンに応じて、スケジュールを変更する方法において、
代りのインプリメンテーション時間をランダムに選択するステップと、
使用可能な実行時間の量とブロッキングアクティビティの存在を決定するために代りの時間を照会するステップと、
ブロッキングアクティビティの決定に応じて、スケジュールの異なったインプリメンテーション時間に移動し、使用可能な実行時間を増加させるようブロッキングアクティビティに要求するステップと、
使用可能な実行時間をアクティビティのライフスパンと比較するステップと、
ライフスパンが使用可能な実行時間以下のとき、ランダムに選択した代りのインプリメンテーション時間にアクティビティを挿入するステップとを含むステップと、
使用可能な時間がライフスパンより小さいとき、アクティビティが挿入されるまであるいは、経過スケジューリング時間がスケジューリング時間予算を超過するまで、代りの実行時間のランダムな選択を繰り返すステップとを含んでいるアクティビティをスケジュールするコンピュータにインプリメントされている方法。
【請求項６】
スケジュール変更が反復的である請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項７】
同等以上の優先順位を有するスケジュールされたアクティビティがスケジュール内に保存される請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項８】
ブロッキングアクティビティがより大きい優先順位をもつ場合、新規のアクティビティの優先順位が、移動することを要求されたブロッキングアクティビティによって仮定され、仮の優先順位を持ったブロッキングアクティビティがスケジュール変更を開始する請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項９】
スケジュシュール変更の複数の具体例が実質上、同時に発生する請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項１０】
スケジューリング時間予算が少なくとも２つの部分に分割され、優先順位の低いブロッキングアクティビティは、第１部分に出会うと印を付けられ、その印を付けられた優先順位の低いブロッキングアクティビティは、第２部分で削除される請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項１１】
移動させられた各ブロッキングアクティビティは、最初のインプリメンテーション時間に関して記憶され、各移動させられたブロッキングアクティビティは、できるだけうまくアクティビティの挿入が続くように、最初のインプリメンテーション時間に復元される請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項１２】
移動させられた各ブロッキングアクティビティは、最初のインプリメンテーション時間に関して記憶され、各移動させられたブロッキングアクティビティは、経過スケジューリング時間がスケジューリング予算時間を越えるとき、最初のインプリメンテーション時間に復元される請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項１３】
ライフスパンは、最小寿命存続期間と最大寿命存続期間を含んでいる請求項５記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項１４】
アクティビティは最小寿命存続期間の間挿入される請求項１３記載のコンピュータにインプリメントされているスケジューリング方式。
【請求項１５】
さらに最大寿命存続期間の方にあるフラッフィングアクティビティをさらに含む請求項１３記載のコンピュータにインプリメントされているスケジューリング方法。
【請求項１６】
スケジュールにアクティビティ群を挿入するためのコンピュータプログラムが格納されているコンピュータ読み取り可能な媒体において、
前記コンピュータプログラムがコンピュータによって実行されるときに、
指定された優先順位、ライフプラン、好ましいインプリメンテーション時間および、スケジューリング時間予算を有するアクティビティを受け取るステップと、
好ましいインプリメンテーション時間の使用可能度と使用可能な実行時間の量を決定するためにスケジュールをサーチするステップと、
好ましいインプリメンテーション時間が使用可能であり、ライフスパンが使用可能な実行時間以内でれば、好ましいインプリメンテーション時間にアクティビティを挿入するステップとを含み、
使用できないインプリメンテーション時間あるいは、使用可能な実行時間より大きいライフスパンに応じて、スケジュールを変更し、
その変更において、代りのインプリメンテーション時間をランダムに選択するステップと、
使用可能な実行時間の量とブロッキングアクティビティの存在を決定するために代りの時間を照会するステップと、
ブロッキングアクティビティの決定に応じて、スケジュールの異なったインプリメンテーション時間に移動し、実行時間を増加させるようブロッキングアクティビティに要求するステップと、
使用可能な実行時間をアクティビティのライフスパンと比較するステップと、
ライフスパンが使用可能な実行時間以下のとき、ランダムに選択した代りのインプリメンテーション時間にアクティビティを挿入するステップとを含むステップと、
使用可能な時間がライフスパンより小さいとき、アクティビティが挿入されるまであるいは、経過スケジューリング時間がスケジューリング時間予算を超過するまで、代りの実行時間のランダムな選択を繰り返すステップとを実行する命令を備えるコンピュータプログラム。
【請求項１７】
スケジュール変更が反復的である請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項１８】
同等以上の優先順位を有するスケジュールされたアクティビティがスケジュール内に保存される請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項１９】
ブロッキングアクティビティがより大きい優先順位をもつ場合、新規のアクティビティの優先順位が、移動することを要求されたブロッキングアクティビティによって仮定され、仮の優先順位を持ったブロッキングアクティビティがスケジュール変更を開始する請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項２０】
スケジュシュール変更の複数の具体例が実質上、同時に発生する請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項２１】
スケジューリング時間予算が少なくとも２つの部分に分割され、優先順位の低いブロッキングアクティビティは、第１部分に出会うと印を付けられ、印を付けられた優先順位の低いブロッキングアクティビティは、第２部分で削除される請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項２２】
移動させられた各ブロッキングアクティビティは、最初のインプリメンテーション時間に関して記憶され、各移動させられたブロッキングアクティビティは、できるだけうまくアクティビティの挿入が続くように、最初のインプリメンテーション時間に復元される請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項２３】
移動させられた各ブロッキングアクティビティは、最初のインプリメンテーション時間に関して記憶され、各移動させられたブロッキングアクティビティは、経過スケジューリング時間がスケジューリング予算時間を越えるとき、最初のインプリメンテーション時間に復元される請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項２４】
ライフスパンは、最小寿命存続期間と最大寿命存続期間を含んでいる請求項１６記載のコンピュータ読み取り可能な媒体。
【請求項２５】
アクティビティは最小寿命存続期間の間挿入される請求項２４記載のコンピュータ読み取り可能な媒体。
【請求項２６】
最大寿命存続期間の方にあるフラッフィングアクティビティ群をさらに含む請求項２４記載のコンピュータ読み取り可能な媒体。
【請求項２７】
プロセシング装置と、
前記プロセシング装置に結合されている記憶装置と、
前記プロセシング装置に結合されている入力装置と、
前記プロセシング装置に結合されている出力装置とを備え、
前記プロセシング装置は
指定された優先順位、ライフプラン、好ましいインプリメンテーション時間および、スケジューリング時間予算を持つアクティビティを受け取り、
好ましいインプリメンテーション時間の使用可能度と使用可能な実行時間の量を決定するためにスケジュールをサーチし、
好ましいインプリメンテーション時間が使用可能であり、ライフスパンが使用可能な実行時間以内でれば、好ましいインプリメンテーション時間にアクティビティを挿入し、
使用できないインプリメンテーション時間あるいは、使用可能な実行時間より大きいライフスパンに応じて、スケジュールを変更し、前記スケジュールの変更は、
代りのインプリメンテーション時間をランダムに選択し、
使用可能な実行時間の量とブロッキングアクティビティの存在を決定するために代りの時間を照会し、
ブロッキングアクティビティの決定に応じて、スケジュールの異なったインプリメンテーション時間に移動し、使用可能な実行時間を増加させるようブロッキングアクティビティに要求し、
使用可能な実行時間をアクティビティのライフスパンと比較し、
ライフスパンが使用可能な実行時間以下のとき、ランダムに選択した代りのインプリメンテーション時間にアクティビティを挿入することを含み、
使用可能な時間がライフスパンより小さいとき、アクティビティが挿入されるまであるいは、経過スケジューリング時間がスケジューリング時間予算を超過するまで、代りの実行時間のランダムな選択を繰り返す動作ができるアクティビティ群をスケジュールするコンピュータシステム。
【請求項２８】
スケジュール変更が反復的である請求項２７記載のコンピュータシステム。
【請求項２９】
同等以上の優先順位を有するスケジュールされたアクティビティがスケジュール内に保存される請求項２７記載のコンピュータシステム。
【請求項３０】
ブロッキングアクティビティがより大きい優先順位をもつ場合、新規のアクティビティの優先順位が、移動することを要求されたブロッキングアクティビティによって仮定され、仮の優先順位を持ったブロッキングアクティビティがスケジュール変更を開始する請求項２７記載のコンピュータシステム。
【請求項３１】
スケジュシュール変更の複数の具体例が実質上、同時に発生する請求項２７記載のコピュータシステム。
【請求項３２】
スケジュールにアクティビティを付加するためのコンピュータプログラムが格納されているコンピュータ読み取り可能な媒体において、
ユーザがアクティビティ、ユーザが指定する優先順位、ライフプラン、好ましいインプリメンテーション時間および、アクティビティに対するスケジューリング時間予算を入力することを許容する入力装置と動作的に連係している入力ルーチンと、
好ましいインプリメンテーション時間の使用可能度または代りのインプリメンテーション時間、使用可能な実行時間の量、そしてブロッキングアクティビティの可能な存在を決定するめにスケジュールファイルをサーチするサーチルーチンと、
使用可能な実行時間がライフスパン以上であるときに、決定された使用可能な好ましいインプリメンテーション時間または代りのインプリメンテーション時間にアクティビティを挿入する挿入ルーチンと、
好ましいインプリメンテーション時間または代りのインプリメンテーション時間にもっとも近い時間にスケジュールされるブロッキングアクティビティの決定に応じて、ブロッキングアクティビティを代りのインプリメンテーション時間に再配置する動作を行う再配置ルルーチンと、
再配置ルーチンによって呼び出され、アクティビティまたはブロッキングアクティビティのために代りのインプリメンテーション時間を選択するランダム化ルーチンと、
経過スケジューリング時間がスケジューリング時間予算を超過するときに経過スケジューリング時間とスケジューリング予算時間を比較し、プログラム実行を終了させるタイミングルーチンを備えるコンピュータプログラム。
【請求項３３】
スケジュール変更が反復的である請求項３２記載のコンピュータ読み取り可能な媒体。
【請求項３４】
前記ルーチンの複数の具体例が実質上、同時に走行する請求項３２記載のコンピュータ読み取り可能な媒体。
【請求項３５】
同等以上の優先順位を有するスケジュールされたアクティビティがスケジュール内に保存される請求項３２記載のコンピュータ読み取り可能な媒体。
【請求項３６】
好ましいインプリメンテーション時間あるいは代りのインプリメンテーション時間にもっとも近い時間にスケジュールされた優先順位の低いブロッキングアクティビティを削除する動作を行う削除ルーチンをさらに含む請求項３２記載のコンピュータ読み取り可能な媒体。
【請求項３７】
各再配置されたアクティビティの最初のインプリメンテーション時間を追跡する追跡ルーチンと、
各再配置されたアクティビティをおおよそ各最初のインプリメンテーション時間に復元する動作を行うクリーンアップルーチンをさらに含む請求項３２記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にスケジュールにおける新規アクティビティ群のスケジューリングに関し、特に、優先順位の高いアクティビティ群を追い出すことなく、優先順位によって関係付けられる新規アクティビティ群の挿入を許すシステムに関する。
【背景技術】
【０００２】
簡単に述べると、スケジュールは、何のアクティビティ／アクティビティ群が行われるか、いつ行われるか、誰が実行するのかを関係者へ通知する。スケジュールは１時間、１日、１週間、１月または他の時間の間走行する。一般的に、「いつ」の特性は、特定の時間にアクティビティを開始させ、およびまたその後の特定の時間に終了させる特定の基準である。
【０００３】
「何」の特性に関しては、スケジュールは、睡眠、食事、建築あるいはなにか他のアクティビティのような非常に一般的なアクティビティ情報を提供する。「何」の特性はまた、ベッド２での睡眠、テーブル５での食事、ステーション４での建築のようなリソース情報を提供する。
【０００４】
「誰」の特性に関しては、スケジュールは、誰がそのアクティビティを実行しているかについて、アクティビティのオブザーバに情報を提供する。あるいはスケジュールは、アクティビティを開始し、また終了させるため関係者に指示を与える。典型的には、スケジュールはまた、現在、アクティビティ群がスケジュールされている時間であるビジー時間はもちろん、スケジュールされていない時間である空き時間を指示する。  
スケジュールは、アクティビティ群を受けとった順に、または論理的に発生する順にスケジュールすることによって組み立てられる。スケジュールはまた、優先の降順または昇順にアクティビティ群に優先順位をつけることによって組み立てられる。アクティビティが発生するまたは発生するかもしれない時間が重要である場合には、配置の焦点は、優先の単純な順序から特定な時間の優先順位のレベルに移る。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
多くの実世界の設定では、スケジュールに対して特定の要求がある。どんな所定のリソース（航空機、人工衛星、コンピュータのような）に対しても、何かがどの位長くそしてどの位多く発生するかという両方の点で有限な有効性がある。コンピュータの速度は増加し続けている。しかし、時間の各瞬間には、ＣＰＵは実行すべき有限個の動作を保持している。さらに強力なコンピュータＣＰＵリソースは、強力でないＣＰＵリソースより多くの動作を実際に実行する。そして、そのような選択はスケジュールを立てるときに考慮されるあるいは考慮されないかも知れない。もう一つの例では、航空機あるいは人工衛星は、いつでも地球上の特定の地点の上方にあるわけではなく、航空機あるいは人工衛星は、目標地域の上方であるときでさえ、基地に戻る前あるいは射程外を通過する前に、有限個のアクティビティを監視、配備、蓄積、実行することができるだけである。  
スケジュールが作成された後には、新規のアクティビティあるいはアクティビティ群の挿入、既にスケジュールされている１以上のアクティビティの変更およびまたは、削除がしばしば必要になる。新規のアクティビティが、さもなければスケジュールに占有されない要求された性能の時間およびライフスパンを保持するとき、挿入は全く容易である。１以上の以前にスケジュールされたアクティビティ群が、新規アクティビティの要求された時間とライフスパンの一部または全てを妨げるとき、複雑な状況が起こる。新規のアクティビティの挿入の試みや可能性のある成功は、かなりの量のスケジュール変更を伴う。そのような変更がどのように実行されるかは、広く変化し多くの要因に依存する。
【０００６】
割り当て時間の間に、競合しているアクティビティ群でスケジュールを一杯にすること、あるいは新規のアクティビティ群が現存のスケジュールされているアクティビティ群と競合する場合に、現存のスケジュールに新規のスケジュール群を入れることは、決して容易ではない。多くの問題そしてそれらに適用されるアルゴリズムは、インプットを直線的に２倍、３倍にする。そして完了させるには２倍、３倍時間がかかる。他の問題は２次式、３次式、もう一つは多項式である。問題の種類が、解が多項式でない所に出会うとき、それはおそらく非決定性多項式であり、より一般に「ＮＰ困難」と呼ばれる。
【０００７】
スケジュールを一杯にし、スケジュールに新規のアクティビティ群を挿入することは、ＮＰ困難であるとみなされるアクティビティ群である。ＮＰ困難の問題は、良く知られており、しばしば出会う。しかしそれらを解くアルゴリズムは知られていない。高速アルゴリズムは、実際に有用であるべき解として十分速く最適解を返すものである。解を計算するのに年数がかかる場合、有用さの期間が長く期限切れになることはかなりあり得る。
【０００８】
そのようなＮＰ困難の問題の有名な例は、旅行するセールスマンである。セールスマンは、各州都を訪問することを望み、運転時間を最小にすることを望んでいる。５０州の範囲で４９！の可能性のある選択がある。そしてこの問題を正確に解くアルゴリズムは知られていない。
【０００９】
スケジュールについては、無限の多量な時間が与えられれば、最適解は見つけられるかも知れない。しかしながら、スケジュールを具体化をしている間、そしてそれに続くスケジュールの変更の間、実際の時間は継続して進んでいる。その結果、最適解が見つかる時までに、あまりにも多くの時間が経過し、結果が疑わしいということが大いにあり得る。
【００１０】
特定のスケジュールの目的もまた、どのようにアクティビティ群をスケジュールするか、どのように新規のアクティビティを追加するかを操縦する。スケジュールの組み立て、変更で使用されてきた１つの普及している方法は、「英国的オークション」である。それはまた最高価格、公開入札オークションとしても知られている。
【００１１】
「英国的オークション」では、アクティビティ群は、リソ−スに値をつける。全ての使用可能なリソースと機会はオークションで考慮に入れられる。優先順位の低いアクティビティ群と優先順位の高いアクティビティ群はともに競り合う。優先順位の高いアクティビティ群はより高い最高の指値を持ち、そのため、ついに好ましい割り当て時間を確得する。しかし、優先順位の低いアクティビティを収容する前はできない。実際は、特定のタイムスロットに対して低い優先権を持つ優先順位の高いアクティビティは取って代わられる。そして、その特定のタイムスロットに対して高い優先権を持つ１以上の優先順位の低いアクティビティ群によって取って代わられ、もしかすると削除される。
【００１２】
別の方法で述べると、タイムスロットに対して高い優先権を持つ優先順位の低いアクティビティは、同じタイムスロットに対して低い優先権をもつ優先順位の高いアクティビティに取って代わる。さらに、複数の優先権の低いアクティビティ群は、結合された優先権が単独の優先順位の高い優先権より大きければ、力を結合させ、ひとまとめにして優先順位の高いアクティビティに取って代わる。
【００１３】
望むところは最大数のアクティビティ群をスケジュールすることであり、優先順位にかかわらず英国的オークションはかなり効果的である。しかしながら、優先順位の高いアクティビティのスケジューリング上に置かれたプレミアムがある場合、そのときは英国的オークションは最適解を提供しない可能性がある。実際は、できるだけ多くのイベントをスケジュールすることが命令であるが、しかし優先順位の高いアクティビティが１以上の優先順位の低いものによってこれまで取って代わられていない場合、そのときは英国的オークション手法は受け入れられない。
【００１４】
混合整数方法もまたスケジュール変更を行うために提案されてきた。しかしながら、混合整数方法では各々のかつあらゆる許容される可能なアクティビティ群の置換が考慮され評価される。現代のコンピュータの速度でさえも、比較のために全ての置換を試みることへの焦点は、全てのしかし一番単純なスケジュールに対して混合整数方式を非常に実用的でなくしている。
【００１５】
従って、現在のスケジューリングシステムに見られる１以上の技術的問題を克服するアドホックなスケジューラが必要とされている。
【課題を解決するための手段】
【００１６】
本発明は、アクティビティ群をスケジュールするための方法を提供する。
【００１７】
特に、そして単なる例示であるが、本発明の１実施形態に従って、アクティビティ群をスケジュールするために１つの方法が提供される。その方法は、
指定された優先順位、ライフスパンまたは満了時間、好ましいインプリメンテーション時間、そしてスケジューリング時間の予算を有しているアクティビティを受け取るステップと、
好ましいインプリメンテーション時間の使用可能度と使用可能な実行時間の量を決定するためにスケジュールをサーチするステップと、
好ましいインプリメンテーション時間が使用可能であり、ライフスパンが使用可能な実行時間以内でれば、好ましいインプリメンテーション時間にアクティビティを挿入するステップと、
使用できないインプリメンテーション時間あるいは使用可能な実行時間より長いライフスパンに応じてスケジュールを変更する方法であって、スケジュールされた同等以上の優先順位を持つアクティビティ群を保存する方法と、
経過したスケジューリング時間がスケジューリング時間予算を越えたとき前記方法を退出させるステップとを備えている。
【発明を実施するための最良の形態】
【００１８】
詳細な説明を続ける前に、ここにおける説明は、限定ではなく、例示であることが認識されるべきである。ここでの概念は、特定の種類のスケジューラでの使用または応用に制限されない。このように、ここで説明される手段は、説明の便宜上、例示的な実施形態に関して説明、表示されているけれども、ここでの原理は他の種類のスケジューリングシステムに等しく適用されるということが認識されるべきである。
【００１９】
図１は、少なくとも１実施形態に従ったスケジューリングシステム１００のコンピュータプログラム構成の高レベルのブロック図である。スケジューリングシステム１００は、プロセッサ、メモリ、記憶装置、そして入出力装置のような典型的なコンピュータコンポーネントを有するコンピュータに実装される。動作中、スケジューリングシステム１００は、増加された速度と効率でアクティブメモリ中で維持される。さらに、すくなくとも１実施形態では、スケジューリングシステム１００は、コンピュータネットワーク上で動作し、分散したリソースを利用することができる。
【００２０】
スケジューリングシステム１００は、以下の主要なしかし非排他的であるテナントに従って、新規のアクティビティをスケジュールに挿入するために使用される。即ち、第一に、高い優先順位を持つアクティビティ群は、スケジュール内に維持される。単一の優先順位の低いアクティビティまたは優先順位の低いアクティビティ群のグループは、優先順位の高いアクティビティに取って代わることはできない。第二に、現存のスケジュールへの影響は最小にされる。現存のスケジュールされているアクティビティ群は、再スケジュールすることを要求される。現存の優先順位の低いアクティビティの削除は、再スケジュールする要求が新規のアクティビティのスケジューリングを許可することに失敗するときにだけ実行される。第三に、新規のアクティビティがスケジューリング時間予算画面でスケジュールされることができない場合、スケジューリングシステム１００は終了する。
【００２１】
以下の説明をさらに助けるために、以下の定義された用語が提供される。
【００２２】
「優先順位」−アクティビティの数値的優先順位の評価（優先順位１のアクティビティ＞優先順位２のアクティビティ）。
【００２３】
「ライフスパン」−アクティビティに要求される実行時間であり、最小値と最大値を持つ。
【００２４】
「インプリメンテーション時間」−アクティビティが実行を開始する特定の時間。
【００２５】
「スケジューリング時間予算」−スケジュールの中にアクティビティの挿入を試みるために割り当てられる時間の量。
【００２６】
「実行時間」−アクティビティの実行のために使用可能な時間の量あるいはアクティビティのためにスケジュールの中で使用可能なライフスパン。
【００２７】
「フラッフィング」−規定するとしたら、スケジュールされたアクティビティのライフスパンを最小値のライフスパンから最大値のライフスパンに向けて増加させる行動。
【００２８】
「クリーンアップ」−移動させられたアクティビティまたはアクティビティ群を最初のインプリメンテーション時間あるいは、できるだけ最初のインプリメンテーション時間に近い時間に戻して復元する行動。
【００２９】
図１に戻り、スケジューリングシステム１００は、入力ルーチン１０２、サーチルーチン１０４、挿入ルーチン１０６、再配置ルーチン１０８、ランダム化ルーチン１１０、タイミングルーチン１１２を含む。少なくとも１実施形態では、スケジューリングシステム１００は、コンピュータデータファイルあるいは複数のコンピュータデータファイルとして格納されているスケジュール中にアクティビティ挿入する動作が可能である。データファイルの種類は重要でなく、データベース、リレーショナルデータベース、ストリングファイル、あるいはスケジューリングシステム１００が使用されるデータおよびシステムにとって適正である他の形式でも良い。
【００３０】
入力ルーチン１０２は、ユーザがスケジュールに入力されるべきアクティビティを入力することを許可する入力装置と適切に連結している。各アクティビティは、少なくとも優先順位、ライフスパン、好ましいインプリメンテーション時間およびスケジュール時間予算を持っている。ある実施形態では、例えば特定のリソ-スのような追加情報が同様に提供される。
【００３１】
サーチルーチン１０４は、好ましいインプリメンテーション時間の使用可能度あるいは、代りのインプリメンテーション時間、使用可能な実行時間の数量と、ブロッキングアクティビティの可能な存在を決定するために、スケジュールをサーチするように動作することが可能である。挿入ルーチン１０６は、使用可能な実行時間がライフスパン以上であれば、決定された使用可能な好ましいインプリメンテーション時間、あるいは代りのインプリメンテーション時間にアクティビティを挿入する。
【００３２】
再配置ルーチン１０６は、好ましいインプリメンテーション時間、あるいは代りのインプリメンテーション時間に近い時間にスケジュールされたブロッキングアクティビティの決定に応じて、ブロッキングアクティビティを代りのインプリメンテーション時間に再配置する動作を行う。ランダム化ルーチン１１０は、アクティビティあるいは、ブロッキングアクティビティのために代りのインプリメンテーション時間を選択する動作が可能である。タイミングルーチン１１２は、経過スケジューリング時間をスケジューリング時間予算と比較する動作が可能であり、経過スケジューリング時間がスケジューリング時間予算を越える場合にはプログラムの実行を終了させる。
【００３３】
一番単純な本質において、スケジューリングシステム１００は、スケジュールに対するアクティビティ挿入システムとして説明される。スケジューリングシステム１００は、空いているスケジュール中にアクティビティ群を挿入するために使用される。このように新規のスケジュールを生成し、あるいは前に存在していたスケジュール中にアクティビティ群を挿入する。スケジュールの一般的な動作は図２のフローチャートに示されている。
【００３４】
少なくとも１実施形態において、スケジューリングシステム１００は、優先順位、ライフスパン、好ましいインプリメンテーション時間、およびスケジューリング時間予算を持った新規のアクティビティを受け取る（ブロック２００）。アクティビティに応じて、１つ以上のこれ等項目がユーザ規定される。
【００３５】
最初に、システムは好ましいインプリメンテーション時間が使用可能かどうか調べるためにスケジュールをサーチする（ブロック２０２）。インプリメンテーション時間が使用可能であり、ライフスパンが使用可能な実行時間（スペース）以下であれば（判断２０４）、スケジューリングシステム１００は、スケジュールにアクティビティを挿入することを実行する（ブロック２０６）。インプリメンテーション時間とスペースが使用可能でなければ（判断２０４）、スケジューリングシステム１００は、スケジュールを変更することを実行する（ブロック２０８）。
【００３６】
上述したように、現存のスケジュールに新規のアクティビティをスケジュールする処理は、しばしばＮＰ困難問題とみなされる。時間とリソースの無限の量が与えられれば最適解が見つけられるが、しかしながらそのような時間フレームは、人間の寿命のような実用的な期間をかなり超えている。良い解を捜すことは、最適解を捜すことよりしばしばより賢い行動の方向である。あるケースでは、良い解は、解が見つけられないということが単純に知られていることであってもよく、従って別のオプションを考慮すべきである。スケジューリング時間予算をスケジューリングシステム１００に負わせることにより、スケジューリングシステム１００は、スケジュールにアクティビティを差し込む試みが成功あるいは失敗するユーザに助言をする。
【００３７】
その結果、スケジューリングシステム１００は、アクティビティ群をスケジュールする試みに費やした時間を追跡する。判断２１０は、時間の認識を表している。より明確には、スケジューリングシステム１００は、どちらか１つの解が見つけられるか、あるいはスケジューリング時間予算が超過するまで、解を捜すことを継続する。
【００３８】
経過時間がスケジューリング時間予算より短い間は、システムは、スケジュールを変更し、アクティビティを挿入しようと試みる。使用できないインプリメンテーション時間あるいは使用可能な実行時間より長いライフスパンに応じて、スケジュールを変更する方法は、同等以上の優先順位でスケジュールされたアクティビティ群を保存する。最も基本的な変更は、アクティビティのために代りのインプリメンテーション時間を選択し、再度スケジュールをサーチすることである（ブロック２０２へ戻る）。
【００３９】
図３は、スケジュールが１２：００から４：００に発生している４つのスケジュールされたアクティビティ、アクティビティＡ−１２：００、アクティビティＢ−１：３０、アクティビティＣ−３：００、アクティビティＤ−３：３０を有する簡単な例の一部分を示している。ライフスパンは分で測定される。アクティビティＥはスケジュールに挿入されるべきアクティビティとして提供される。示されているように、アクティビティＥのライフスパンは６０分である。アクティビティＥの好ましいインプリメンテーション時間は、１：００である。示されているように、１：００に現在使用可能な実行時間は３０分である。従って、スケジュール変更を行わずにアクティビティＥを１：００にスケジュールすることはできない。
【００４０】
図４は、図２のブロック２０８で表した、スケジュールを変更する方法の１実施形態を詳細に説明し、アクティビティＥがどのように挿入されるかを説明している。変更は代りのインプリメンテーション時間をランダムに選択することによって（ブロック４００）、例えば２：３０に始まる。次に代りの実行時間において、使用可能な実行時間の量、およびまたはブロッキングアクティビティの存在をスケジューラに照会する（ブロック４０２）。図３で表示されているように、２：３０は、アクティビティＣが３：００に始まる前に３０分の使用可能な実行時間を有している。
【００４１】
アクティビティがあるリソースを必要とすれば、そのリソースの使用可能度は、代りのインプリメンテーション時間の容認性を決定する追加要因になることは言うまでもない。換言すれば、スケジュールされるべきアクティビティが２０分の露光でカメラを用いて月を観察していれば、月が観察できないあるいはカメラが使用できないときには、代りの時間期間は、２０分の実行時間が使用可能であっても選択されない。
【００４２】
ブロッキングアクティビティがなく（決定４０４）、かつアクティビティのライフスパンが使用可能な実行時間以下である場合（決定４０６）、スケジューリングシステム１００は、アクティビティを挿入し（ブロック４０８）、終了する。ブロッキングアクティビティが存在する場合（決定４０４）、ブロッキングアクティビティは移動するよう要求される（ブロック４１０）。移動する要求は反復行動である。より明確には、スケジューリングシステムは、ブロッキングアクティビティをスケジュールすべき新規のアクティビティとして取り扱い、代りのインプリメンテーション時間を選択する。スケジュール変更処理の複数の具体例は、スケジューリングシステム１００が受け入れ可能な解を見つける作業をするように実質上同時に発生する。
【００４３】
アクティビティＣはアクティビティＥにとってブロッキングアクティビティである。表示されている例では、アクティビティＣはまたアクティビティＥの優先順位より低い優先順位を持っている。同等以上の優先順位でスケジュールされたアクティビティ群は、スケジュール内で保存される。少なくとも１実施形態では、この保存は、同等以上の優先順位を持った現存のアクティビティ群を移動しないことを要求する。少なくとも１つの別の実施形態では、同等以上の優先順位でスケジュールされたアクティビティ群は、移動されるがしかし、削除されることはない。
【００４４】
アクティビティＣは、ブロッキングアクティビティであり、それ故、スケジュールすべき新規のアクティビティとしてシステムに渡される。代りのインプリメンテーション時間が例えば１：００と選択されると、スケジュールは、使用可能度を決定するためにサーチされる。１：００は使用可能であり、３０分の実行時間を提供すると、アクティビティＣは、１：００に移動される。ブロッキングアクティビティが移動され（アクティビティＣ）（決定３１２）、使用可能な実行時間がライフスパンと今同じであると（ブロック３０６）、アクティビティＥは、２：３０に挿入される（ブロック３０８）。
【００４５】
ブロッキングアクティビティが移動されないと（決定３１２）、再度試みる前に、スケジューリング予算時間に対して経過スケジューリング時間が検査される（ブロック３１４）。ブロッキングアクティビティは、例えば適当な代りのインプリメンテーション時間が使用可能ではなかったため、移動されなかったかもしれない。この例では、アクティビティＥがうまく追加されるまで、あるいは経過スケジューリング時間がスケジューリング時間予算を越えるまで処理は継続する。
【００４６】
図５〜６の見本のスケジュールと図７のフローチャートはさらに、同等以上の優先順位を持つスケジュールされたアクティビティ群がどのようにスケジュールの中で保存されるかを説明している。図５で表示されるように、アクティビティＦからＫまでがスケジュールされている。アクティビティＬが挿入されるべきである。再度、議論と説明を容易にするため、リソースのような追加要因は表示されていないが、しかし確かに含まれているかも知れない。
【００４７】
図７のフローチャートと図５に関して、アクティビティＬは、ブロック７００で、優先優位が５、ライフスパンが６０、インプリメンテーション時間が１：００、そして時間予算が２である新規のアクティビティとして受け取られる。ブロック７０２で、アクティビティＬは、ペンディングアクティビティになる。ブロック７０４で、インプリメンテーション時間に、使用可能な実行時間および、ブロッキングアクティビティの存在をスケジューラに照会する。
【００４８】
図５で示されているように、スケジュール時間１：００は、アクティビティＧが開始のためにスケジュールされる前に、３０分の使用可能な実行時間を提供する。このように、ライフスパンは、使用可能な時間より大きく（決定７０６）、そしてブロッキングアクティビティが存在する（ブロック７０８）。ブロッキングアクティビティ（アクティビティＧ，優先順位が３）の優先順位は、ブロック７１０に表示されるように獲得される。
【００４９】
ブロッキングアクティビティＧを移動するための試みがなされる（決定７１２）。この試みを成し遂げるため、ペンディングアクティビティＬは、１：００に仮にスケジュールされ、ブロッキングアクティビティＧは、スケジューリングシステムの新規の具体例では新規のペンディングアクティビティになる（図６参照）。少なくとも１実施形態では、アクティビティＬの詳細をデータベースのような仮ログレコードに記録することによって、仮のスケジューリングが成し遂げられる。仮にスケジュールされたアクティビティ群に対する情報を含むことにより、仮のログレコードは、全体のスケジュールよりさらに容易にレビューされ、そして迅速に、サーチされ、仮のアクティビティ群を認めるあるいは否認するためにレビューされる。
【００５０】
少なくとも１実施形態では、ファイルはまた、各々のそしてあらゆる移動されたブロッキングアクティビティの詳細について維持される。仮のログレコードについて、移動されたブロッキングアクティビティレコードは、データベースとして維持される。最も明確には、少なくとも１実施形態において、移動されたブロッキングアクティビティレコードは、ペンディングアクティビティをスケジュールする試みで移動された各ブロッキングアクティビティに対する最初のインプリメンテーション時間の記録を提供する。
【００５１】
少なくとも１つの代りの実施形態において、移動されたブロッキングアクティビティと仮のログレコードは、組み合わされたファイルである。１つの仮の実施形態において、例えば、スケジュールがリレーショナルデータベースとして維持されると、移動されたブロッキングアクティビティレコードと仮のログレコードは、連合したリレーショナルデータベース要素である。
【００５２】
この反復スケジューリング試行では、ペンディングアクティビティＧは、アクティビティＬより優先順位が低いと仮定することに注意することが重要である。より明確には、アクティビティＧの再スケジューリング移動試行のためには、アクティビティＧは優先順位が５であると仮定する（再度、図６を参照）。
【００５３】
図７のフローチャートに関して、時間予算に対する経過時間の検査は、決定７１６で実行される。そして、代りのインプリメンテーション時間を許可する時間が、ブロック７１８で表示されるように選択される。システムはブロック７０４の照会動作に戻る。第１例のために、アクティビティＧに対する代りのインプリメンテーション時間は、２：３０である。図６で示されるように、スケジュール時間２：３０は、アクティビティＨが開始のためにスケジュールされる前に、３０分の使用可能な実行時間を提供する。アクティビティＨは、それ故ブロッキングアクティビティである。
【００５４】
この実例では、例示のために、アクティビティＨは移動しない（決定７１２）。ペンディングアクティビティＧとブロッキングアクティビティＨの優先順位が比較される（決定７２０）。ブロッキングアクティビティＨの優先順位が小さいため（６＜５）、ブロッキングアクティビティＨは、印を付けられる（ブロック７２２）。
【００５５】
仮のログレコードと移動されたブロッキングアクティビティレコードでは、少なくとも１実施形態では、印を付けられたアクティビティレコードが維持される。この印を付けられたアクティビティレコードは、分離ファイル、連合ファイル（すなわちリレーショナルデータベースにおいて）として、あるいはスケジューリングデータベースの一部の一部として維持される。印を付けられたファイルレコードの目的は、以後の使用のために、印を付けられたファイルの容易にサーチ可能なリストを提供することである。さらに以下に説明するように。
【００５６】
優先順位の発行と、それがどのようにスケジュールに保存されるかは、ほかの例をしばらく考慮するつることにより最もよく説明される。別の第２例では、ブロック７１８で選択される代りのインプリメンテーション時間は、４：３０である。図６に表示されるように、アクティビティＩは、４：３０に始まるためにスケジュールされる。アクティビティＪは、それ故ブロッキングアクティビティである。
【００５７】
この実例では、例のために、アクティビティＪは移動しない（決定７１２）。ペンディングアクティビティＧとブロッキングアクティビティＪの優先順位が比較される（決定７２０）。ブロッキングアクティビティＪの優先順位が大きいため（４＞５）、ブロッキングアクティビティＪは、印を付けられない。
【００５８】
いくつかの実例では、代りのインプリメンテーション時間に単純にアクティビティ群を移動することは、与えられたスケジューリング時間予算内でのスケジューリング解にならない。それらの実例では、ユーザによって提供されるアクティビティがスケジュールされるべきであれば、１以上の現在スケジュールされているアクティビティは削除されなければならない。
【００５９】
優先順位の低いアクティビティに印を付ける目的は、優先順位の高いアクティビティがスケジュール内に保存されることを保証することである。優先順位の低いアクティビティが優先順位の高いアクティビティを間接的に削除しないことを保証するように移動することを試みるとき、優先順位の高いアクティビティは、優先順位の低いアクティビティの優先順位と仮定する。印を付けられたアクティビティは、必要であれば削除されるアクティビティとして書き留められる。
【００６０】
より明確には、上記の第１例では、アクティビティＧは、ブロッキングアクティビティＨに出会い、そしてアクティビティＧの仮定した優先順位５は、アクティビティＨの優先順位６より大きかったため、アクティビティＨは印を付けられた。上記の第２例では、アクティビティＧは、ブロッキングアクティビティＪに出会った。ここで、アクティビティＧの仮定した優先順位５は、アクティビティＪの優先順位４より小さかった。そしてアクティビティＪは印を付けられなかった。もし、アクティビティＧがアクティビティＬからの優先順位と仮定されなかった場合、アクティビティＧの最初の優先順位３は、アクティビティＪの優先順位より大きいと評価され、アクティビティＪは印を付けられたであろう。優先順位の各評価は、１対１の比較であるため、優先順位の低いアクティビティ群の組み合わせが１以上の優先順位の高いアクティビティ群に取って代わることはない。
【００６１】
ユーザに提供されたアクティビティがスケジュールされると、どんな仮定した優先順位も下がり、最初の優先順位に戻される。ユーザに提供されたアクティビティがスケジューリング時間予算内でスケジュールされない場合には、どんな仮定した優先順位もまた下がり、最初の優先順位に戻される。
【００６２】
図７のフローチャートに戻ると、ブロッキングアクティビティの印付け、あるいは印付けをしない後で、時間予算は再度評価される（決定７２４）。少なくとも１実施形態では、スケジューリング時間予算のある割合が経過した後に、スケジューリングシステム１００がユーザに提供されたアクティビティを挿入できない場合、（決定７２６）スケジューリングシステム１００は、優先順位の最も低い印を付けられたアクティビティ（群）を取り消すように動く（ブロック７２８）。換言すれば、スケジューリング時間予算は、少なくとも２つの部分に分割される。優先順位の低いブロッキングアクティビティ群は第１部分で出会ったとき印を付けられ、印を付けられた優先順位の低いアクティビティ群は第２部分で削除される。解放された時間は、新規の実行時間としてひとまとめに集められ、スケジュールで使用可能である。
【００６３】
少なくとも１実施形態では、アクティビティ群を削除する前に経過するスケジューリング時間予算の割合は、ユーザが用意する値である。少なくとも１つの別の実施形態では、スケジューリング時間予算の割合はシステムで定義される。しかし、別の実施形態では、システムは、アクティビティを削除する前に全体のスケジューリング予算を利用する。
【００６４】
このことは、ユーザのスケジューリング時間予算の内訳と合致しないように見えるかも知れないが、一方アクティビティ群を削除する処理ためのユーザの認識時間は、機会をサーチするためのユーザの認識時間に対してほとんど無視できるということが理解され、了解される。例えば、スケジューリング時間予算として１０分が指定され、スケジューリングシステム１００は、まる１０分かけてスケジュールをサーチした後、１秒もかけずにいくつかの印を付けられたアクティビティ群を削除し、ユーザに提供されたアクティビティを挿入する。
【００６５】
上記の実例１つからのアクティビティＨのような、削除された印を付けられたアクティビティについて、ライフスパンは、現在使用可能な実行時間に対して評価される（決定７３０）。ライフスパンが実行時間以下であれば、アクティビティはスケジュールされる（ブロック７３２）。
【００６６】
ユーザに提供されるアクティビティがスケジュールされようとされまいと、少なくとも１実施形態では、スケジューリングシステム１００が動作を終了させる前に、２つの行動方針が講じられる。１つの例では、ユーザは、強い影響がある追加動作として、スケジューリングシステムに新規のアクティビティを提供する。強い影響がある追加動作では、ユーザに提供されるアクティビティを挿入する試みで必要であるため、スケジューリングシステム１００は、ブロッキングアクティビティを比較し、印を付け、削除する。さらに、上述の処理は、少なくとも１実施形態では、強い影響がある追加動作である。
【００６７】
別の例では、ユーザは、中程度の影響がある追加動作として、スケジューリングシステム１００に新規のアクティビティを提供する。スケジューリングシステムが中程度の影響がある追加動作としてユーザに提供されたアクティビティで動作している場合（ブロック７３４）、ブロッキングアクティビティを比較し、印を付け、移動し、削除することに加えて、スケジューリングシステム１００はまた、クリーンアップする。さらに、上述の処理は、クリーンアップ動作によって増大しているとき、中程度の影響がある追加動作である。
【００６８】
クリーンアップ動作を行っているとき、スケジューリングシステム１００は、それらの動きの逆の順序でアクティビティ群を最初の実行時間に戻す。ユーザに提供されるアクティビティがうまくスケジュールされない場合、クリーンアップ動作は一般的に大体成功する。もちろん、スケジューリングを試みる時の経過が、再スケジュールされなければ始まるべきアクティビティのための時間の期間に進まない限り。
【００６９】
スケジューリングシステム１００は反復システムであり、実質上同時に走行する複数の具体例を有していることは言うまでもない。演算において、多重タスク処理は、プロセスとしても知られている複数のタスクがＣＰＵのような共通処理リソースを共有するための方法である。時間のどの時点でも、ただ１つのタスクが実際には走行しているといえる。ＣＰＵはそのタスクに対する実際に実行する命令であるということを意味している。多重タスク処理は、どのタスクがどこか所定の時間に走行する１つのタスクであるか、そしていつ別の待ちタスクが順番を得るかをスケジューリングすることによって問題を解く。ＣＰＵを１つのタスクから別のタスクに再割り当てする行動は、コンテキストスイッチと呼ばれる。コンテキストスイッチが実にたびたび発生するとき、各処理が増加的に進行するように、動作の同時実行の錯覚が生じる。
【００７０】
スケジューリングシステム１００は、多重タスク処理動作として実行される。ブロッキングアクティビティに出会うとき、スケジューリングシステム１００は、ブロッキングアクティビティを移動することを試みる目的のために、１つの動作処理を開始する。実質上同時に、ペンディングアクティビティのためにさらに別の代りのインプリメンテーション時間をランダムに選択するために、スケジューリングシステム１００は、第２の動作処理を開始する。並行処理の動作では、１処理の成功は、全体の動作を終了させる。同様に、スケジューリング時間予算が超過すると、全ての処理は終了させられる。オペレーティングシステムが違えば、並行処理の認識を管理するために、違った仕組みのものが提供される。少なくとも１実施形態では、そのような並行管理は、コンピュータシステムのＣＭＯＳに設定される信号フラグによって実現される。
【００７１】
ユーザに提供されるアクティビティがうまくスケジュールされた場合、少なくとも１つのブロッキングアクティビティに出会い移動されれば、クリーンアップ動作は、全く成功しない。代りのインプリメンテーション時間はランダムに選択されるため、代りのランダムに選択されるインプリメンテーション時間が、再配置の努力を要求しないであろう異なった解を提供する前に、ブロッキングアクティビティに出会い、再スケジュールされる可能性がある。それ等の例では、クリーンアップ動作は、移動されたブロッキングアクティビテフィ群を最初のインプリメンテーション時間にできるだけ近い時間に復元する。クリーンアップ動作は、上述した移動されたブロッキングアクティビティ群の記録や仮のログによって容易になる。
【００７２】
少なくとも１実施形態では、スケジューリング時間予算が超過しない場合（決定７３８）、システムはどれか取り消されたアクティビティの存在を評価する(決定７４０)。取り消されたアクティビティ群が存在する場合、スケジューリングシステム１００は、これ等のアクティビティ群を新規のペンディングアクティビティ群として再スケジュールしようと努力して、残っているスケジューリング時間予算を利用する（ブロック７４２）。
【００７３】
少なくとも１実施形態では、スケジュールにあるアクティビティ群は、最小寿命存続期間と最大寿命存続期間を更に含むライフスパンを有している。アクティビティ群がスケジュールされると、最小寿命存続期間の間挿入される。換言すれば、使用可能な実行時間に対するライフプランのどのそして全ての評価も、最小寿命存続期間に基づく。アクティビティの挿入が成功した後に、スケジューリングシステムは任意のフラッフィング動作を実行する。
【００７４】
フラッフィングのとき、スケジューリングシステム１００は、追加の実行時間が、
スケジュールされたライフスパンが最小寿命期間値から最大寿命期間値に向けて増加しているようなスケジュールされたインプリメンテーション時間に使用可能かを調べるために、各スケジュールされたアクティビティを再評価する。
【００７５】
記述した処理は、記述した順序で実行される必要はないことが理解され了解される。しかしむしろ、上述した順序は、少なくとも１実施形態の１例である。さらに、コンピュータ環境で実行されると、異なったコンピュータシステムや環境に好まれるように、本処理は、コードや命令の多様な異なった形式で実行される。
【００７６】
現在認識されているように、英国的オークションのようなシステムは、いくつかの場合、多くのアクティビティ群をスケジュールにうまくスケジュールするとはいえ、維持されるべき優先順位の高いアクティビティ群を要求するアプリケーションにとって、本スケジューリングシステムは大変都合がよい。加えて、スケジューリングはＮＰ困難アクティビティであると理解され了解されるとはいえ、スケジューリングシステム１００は、新規のアクティビティの挿入を都合よく試みる能力と既知の時間の値での試みの結果を知る能力をユーザに提供する。
【００７７】
少なくとも１実施形態では、スケジューリングシステム１００は、アクティビティ群をスケジュールするコンピュータシステムとしてインプリメント（実装）される。図８は、例示的なコンピュータシステム８００の高レベルのブロック図である。コンピュータシステム８００は、メインボード８０４を囲むケース８０２を有している。メインボードは、システムバス８０６、接続ポート８０８、中央演算処理装置（ＣＰＵ）８１０のような演算処理装置、主記憶装置８１２のような主記憶格納装置、ハードドライブ８１４、ＣＤ／ＤＶＤ  ＲＯＭドライブ８１６を有している。
【００７８】
メモリバス８１８は、主記憶装置８１２をＣＰＵ８１０につなぐ。システムバス８０６は、ハードドライブ８１４、ＣＤ／ＤＶＤ  ＲＯＭドライバ８１６、そして接続ポート８０８をＣＰＵ８１０につなぐ。例えばマウス８２０、キーボード８２２のような複数の入力装置が提供される。例えばビデオモニタ８２４やプリンタ（図示されていない）のような複数の出力装置が提供される。
【００７９】
コンピュータシステム８００は、ＩＢＭ、ＤｅＬＬコンピュータ、ゲートウェイ、アップル、サンマイクロシステムズ、あるいは他のコンピュータシステムプロバイダによって提供されるディスクトップワークステーション装置のような市販しているシステムである。コンピュータシステム８００はまた、ネットワーク接続されたコンピュータシステムであり、ハードドライブ８１４、追加ＣＰＵ８１０のような記憶格納コンポーネントおよび、プリンタのような出力装置は、一般にネットワークで一緒に結ばれた物理的に離れたコンピュータシステムによって提供される。当業者は、コンポーネントとコンポーネントの相互接続の物理的な合成がコンピュータシステム８００を備え、そして設置され、維持されるべくスケジュールに適したコンピュータシステム８００を選択することを理解し認識する。
【００８０】
コンピュータシステム８００が起動されると、好ましくはオペレーティングシステム８２６がブートストラップ  スタートアップ  シーケンスの一部として主記憶装置８１２にロードされ、動作できるようコンピュータシステム８００を準備する。一番簡単なレベルでかつもっとも一般的な意味で、オペレーティングシステムのタスクは、特定のカテゴリ−プロセス管理、デバイス管理（アプリケーションおよびユーザインタフェース管理を含む）および記憶域管理−となる。
【００８１】
そのようなコンピュータシステム８００では、ＣＰＵ８００は、上述した１以上のスケジューリング実施形態を実行することが可能である。当業者は、スケジュールにアクティビティ群を追加するためのコンピュータプログラム８３０が存在するコンピュータ読み取り可能な媒体８２８が、コンピュータシステム８００に用意されていることを理解する。媒体８２８の形式とプログラム８３０の言語はコンピュータシステム８００にとって適切であることが理解される。例えば、１以上のハードドライブ８１４および主記憶装置８１２のような記憶装置を使用して、動作可能なＣＰＵ８０２は、上述したようにコンピュータプログラム８３０によって提供される命令を読み、スケジューリングシステム１００を実行するよう動作する。
【００８２】
本発明の技術的範囲を逸脱することなく、上述の方法、システム、および構造に変更を行ってもよい。上記の記述に含まれている事項およびまたは添付の図面に表示されている事項は、例示として解釈されるべきであり、限定的な意味では解釈されてはならいということに注意すべきである。以下の請求項は、与えられた方法、システム、構造の技術的範囲の全ての主張はもちろん、ここで記述された全ての一般的および限定的機能も対象にすることを目的にしている。言語の問題として、それらの間で行われる可能性もある。
【図面の簡単な説明】
【００８３】
【図１】１実施形態に従ったスケジューリングシステムの高レベルのブロック図。
【図２】１実施形態に従った高レベルの工程系統図。
【図３】１実施形態に従って、スケジューラが新規のアクティビティを受け取る例。
【図４】１実施形態に従って、図３のスケジュール変更を説明する工程系統図。
【図５】１実施形態に従って、スケジューラが新規のアクティビティを受け取る別の例。
【図６】１以上の実施形態に従って、スケジュールが変更を行う図５の別の例。
【図７】１以上の実施形態に従って、図５および図６に示されるスケジュール変更を説明する工程系統図。
【図８】１以上の実施形態に従ったコンピュータシステムのブロック図。
【図１】
2008532109.tif 000002
【図２】
2008532109.tif 000003
【図３】
2008532109.tif 000004
【図４】
2008532109.tif 000005
【図５】
2008532109.tif 000006
【図６】
2008532109.tif 000007
【図７】
2008532109.tif 000008
【図８】
2008532109.tif 000009