IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許7319196車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法
<>
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図1
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図2
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図3
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図4
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図5
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図6
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図7
  • 特許-車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-24
(45)【発行日】2023-08-01
(54)【発明の名称】車両スケジューリングのために車両相互依存性を解決するためのコンピュータ化されたシステムおよび方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20230725BHJP
【FI】
G06F9/48 300A
【請求項の数】 16
(21)【出願番号】P 2019565280
(86)(22)【出願日】2018-05-24
(65)【公表番号】
(43)【公表日】2020-07-27
(86)【国際出願番号】 US2018034338
(87)【国際公開番号】W WO2018217992
(87)【国際公開日】2018-11-29
【審査請求日】2021-01-12
(31)【優先権主張番号】15/606,084
(32)【優先日】2017-05-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】バン・ウェストインデ,チャールズ・ピィ
(72)【発明者】
【氏名】ミズィーナ,スベトラーナ
(72)【発明者】
【氏名】ゾブチェンコ,マリナ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開平08-286958(JP,A)
【文献】国際公開第2013/005467(WO,A1)
【文献】米国特許出願公開第2007/0021998(US,A1)
【文献】国際公開第2010/055719(WO,A1)
【文献】特開2009-196760(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読取可能媒体に格納され、命令で構成されたスケジューリングモジュールとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を実行させ、当該動作は、
複数のタスクを含むスケジューリングデータ構造を修正する要求を受信したことに応答して、前記要求が、複数のリソースから第1のリソースを使用して実行される第1のタスクをスケジューリングすることに向けられていることを判断することと、
ネットワーク通信を介してデータベースから前記スケジューリングデータ構造にアクセスすることとを含み、各前記複数のタスクは特定のリソースを使用して実行され、前記スケジューリングデータ構造は、第1のタスクセットを含むデータレコードと第2のタスクセットを含むデータレコードを含み、
(i)前記第1のタスクセットは前記第1のリソースとは異なる1つ以上の他のリソースを使用して実行されるタスクを含み、前記第1のタスクセットは、当該タスクセットに含まれるタスクは前記第1のタスクが実行される時間の前に実行されるとの依存性を有し、
(ii)前記第2のタスクセットは前記第1のリソースとは異なる1つ以上の他のリソースを使用して実行されるタスクを含み、前記第2のタスクセットは、当該タスクセットに含まれるタスクは前記第1のタスクが実行される時間の後に実行されるとの依存性を有し、前記動作はさらに、
前記データレコードを分析して前記第1のタスクセット前記第2のタスクセット間の依存性を判断することと、
前記依存性の判断に基づいて、前記第1のリソースを使用して前記第1のタスクを実行するための候補時間を計算することと、
前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を使用して、前記第1のリソースを含む前記複数のリソースのための候補スケジュールを生成することと、
前記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算することと、
生成された前記候補スケジュールと、計算された前記候補スケジュールパフォーマンススコアと、前記候補スケジュールパフォーマンススコアと既存のスケジュールの既存のスケジュールパフォーマンススコアとの比較とを表示することとを含む、コンピューティングシステム。
【請求項2】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を繰り返し実行させ、当該動作は、
1つ以上の依存性に基づいて、前記複数のリソースから前記第2のリソースを使用して第2のタスクを実行するための第2の候補時間を計算することと、
前記第2のリソースを使用する前記第2のタスクのための前記第2の候補時間を使用して、前記第2のリソースを含む前記複数のリソースのための第2の候補スケジュールを生成することと、
前記第2の候補スケジュールを評価して、第2の候補スケジュールパフォーマンススコアを計算することと、
前記第2の候補スケジュールパフォーマンススコアが第2の既存のスケジュールの第2の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、前記1つ以上の依存性に基づいて、前記複数のリソースから前記第2のリソースを使用して前記第2のタスクを実行するための第3の候補時間を計算することと、
前記第2の候補スケジュールパフォーマンススコアが前記第2の既存のスケジュールの前記第2の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、前記第2の候補スケジュールに基づいて前記スケジューリングデータ構造を修正および再生成して、前記第2の候補時間に前記第2のリソースを使用して実行される前記第2のタスクを割り当てることとを含む、請求項1に記載のコンピューティングシステム。
【請求項3】
前記候補スケジュールを評価して前記候補スケジュールパフォーマンススコアを計算するための前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を実行させる命令をさらに含み、当該動作は、
前記候補スケジュールを分析して、前記候補スケジュールにおける前記第1のタスクセットと前記第2のタスクセットとの間の依存性の複数の競合を判断すること、を含み、前記依存性の競合は、互いに依存するタスク間におけるタスクを実行する時間の競合を示し、前記動作は、さらに、
前記依存性の複数の競合に基づいて前記候補スケジュールパフォーマンススコアを生成することを含む、請求項1または2に記載のコンピューティングシステム。
【請求項4】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記依存性の競合は、
(i)前記依存性が、前記第2のリソースを使用して実行される第3のタスクに対する、前記第1のリソースを使用して実行される第2のタスクの依存性を備えるとき、前記第1のリソースを使用して実行される前記第2のタスクが、前記第2のリソースを使用して実行される前記第3のタスクよりも前の候補時間を有する場合、または
(ii)前記依存性が、前記第1のリソースを使用して実行される第5のタスクに対する、前記第2のリソースを使用して実行される第4のタスクの依存性を備えるとき、前記第2のリソースを使用して実行される第4のタスクが、前記第1のリソースを使用して実行される第5のタスクよりも前の候補時間を有する場合、のうちの少なくとも1つにおいて識別される、請求項3に記載のコンピューティングシステム。
【請求項5】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
(i)前記第2のリソースを使用して実行される第2のタスクに対する、前記第1のリソースを使用して実行される前記第1のタスクの依存性、または
(ii)前記第1のリソースを使用して実行される前記第1のタスクに対する、前記第2のリソースを使用して実行される第3のタスクの依存性、のうちの少なくとも1つを備え、
前記依存性に基づいて、前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を計算するための前記命令は、前記プロセッサによって実行されると、前記プロセッサに以下の動作のうちの少なくとも1つを実行させる命令をさらに含み、前記動作は、
前記第2のリソースを使用して実行される前記第2のタスクに対する、前記第1のリソースを使用して実行される前記第1のタスクの依存性である前記(i)が備えられる場合、当該(i)の依存性に基づいて、前記第2のタスクが実行される時間の後であるように前記候補時間を計算することと、
前記第1のリソースを使用して実行される前記第1のタスクに対する、前記第2のリソースを使用して実行される前記第3のタスクの依存性である前記(ii)の依存性が備えられる場合、当該(ii)の依存性に基づいて、前記第3のタスクが実行される時間の前であるように前記候補時間を計算することとを含む、請求項1から3のいずれか1項に記載のコンピューティングシステム。
【請求項6】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
(i)前記第2のリソースを使用する第3のタスクに対する前記第1のリソースを使用する第2のタスクの依存性、または
(ii)前記第1のリソースを使用する第5のタスクに対する前記第2のリソースを使用する第4のタスクの依存性、のうちの少なくとも1つを備え、
前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
前記第2のリソースを使用する前記第3のタスクに対する前記第1のリソースを使用する前記第2のタスクの前記依存性に基づいて、タスク間の実行時間の競合を引き起こすことなく、前記第3のタスクが実行される時間の後であるように前記第1のリソースを使用する前記第2のタスクのための第2の候補時間を計算すること、または
前記第1のリソースを使用する前記第5のタスクに対する前記第2のリソースを使用する前記第4のタスクの前記依存性に基づいて、タスク間の実行時間の競合を引き起こすことなく、前記第4のタスクが実行される時間の前であるように前記第1のリソースを使用する前記第5のタスクのための第3の候補時間を計算すること、のうちの少なくとも1つを実行させ、
前記複数のリソースのための前記候補スケジュールを生成するための前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作のうちの少なくとも1つを実行させる命令をさらに含み、当該動作は、前記第1のリソースに、当該リソースを使用するタスクが割当てられていない空き時間を識別するために、
前記候補スケジュールにおける前記第1のリソースを使用する前記第2のタスクのための前記第2の候補時間を使用することと、
前記候補スケジュールにおける前記第1のリソースを使用する前記第5のタスクのための前記第3の候補時間を使用することとを含む、請求項1~3および請求項5のいずれか1項に記載のコンピューティングシステム。
【請求項7】
前記第1のリソースは、第1の車両であり、前記第1のタスクセットは、1つ以上の他の車両を使用して実行され、前記第2のタスクセットは、前記第1の車両によって実行され、前記命令は、
前記候補スケジュールパフォーマンススコアが前記既存のスケジュールの前記既存のスケジュールパフォーマンススコアよりも大きいと判断するための命令を含み、当該命令は、前記プロセッサによって実行されると、前記プロセッサに動作を実行させる命令をさらに含み、当該動作は、
前記第1の車両と前記1つ以上の他の車両のうちの少なくとも1つとの間の依存性によってもたらされる前記既存のスケジュールにおける競合を前記候補スケジュールが解決すると判断することを含む、請求項1~6のいずれか1項に記載のコンピューティングシステム。
【請求項8】
プロセッサを備えるコンピューティングデバイスによって実行される、コンピュータによって実行される方法であって、
少なくとも前記プロセッサが、複数のタスクを含むスケジューリングデータ構造を修正する要求を受信するステップと、
少なくとも前記プロセッサが、前記要求は、複数のリソースから第1のリソースを使用して実行される第1のタスクをスケジューリングすることに向けられていることを判断するステップと
少なくとも前記プロセッサが、ネットワーク通信を介してデータベースから前記スケジューリングデータ構造にアクセスするステップとを備え、各前記複数のタスクは特定のリソースを使用して実行され、前記スケジューリングデータ構造は、第1のタスクセットを含むデータレコードと第2のタスクセットを含むデータレコードとを含み、
(i)前記第1のタスクセットは前記第1のリソースとは異なる1つ以上の他のリソースを使用して実行されるタスクを含み、前記第1のタスクセットは、当該タスクセットに含まれるタスクは前記第1のタスクが実行される時間の前に実行されるとの依存性を有し、
(ii)前記第2のタスクセットは前記第1のリソースとは異なる1つ以上の他のリソースを使用して実行されるタスクを含み、前記第2のタスクセットは、当該タスクセットに含まれるタスクは前記第1のタスクが実行される時間の後に実行されるとの依存性を有し、前記方法はさらに、
少なくとも前記プロセッサが、前記データレコードを分析して前記第1のタスクセット前記第2のタスクセット間の依存性を判断するステップと、
少なくとも前記プロセッサが、前記依存性の判断に基づいて、前記第1のリソースを使用して第1のタスクを実行するための候補時間を計算するステップと、
少なくとも前記プロセッサが、前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を使用して、前記第1のリソースを含む複数のリソースのための候補スケジュールを生成するステップと、
少なくとも前記プロセッサが、前記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算するステップと、
少なくとも前記プロセッサが、生成された前記候補スケジュールと、計算された前記候補スケジュールパフォーマンススコアと、前記候補スケジュールパフォーマンススコアと既存のスケジュールの既存のスケジュールパフォーマンススコアとの比較を表示するステップとを備える、コンピュータによって実行される方法。
【請求項9】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記方法は、さらに、
1つ以上の依存性に基づいて、前記複数のリソースから前記第2のリソースを使用して第2のタスクを実行するための第2の候補時間を計算するステップと、
前記第2のリソースを使用する前記第2のタスクのための前記第2の候補時間を使用して、前記第2のリソースを含む前記複数のリソースのための第2の候補スケジュールを生成するステップと、
前記第2の候補スケジュールを評価して、第2の候補スケジュールパフォーマンススコアを計算するステップと、
前記第2の候補スケジュールパフォーマンススコアが第2の既存のスケジュールの第2の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、前記1つ以上の依存性に基づいて、前記複数のリソースから前記第2のリソースを使用して前記第2のタスクを実行するための第3の候補時間を計算するステップと、
前記第2の候補スケジュールパフォーマンススコアが前記第2の既存のスケジュールの前記第2の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、前記第2の候補スケジュールに基づいて前記スケジューリングデータ構造を修正および再生成して、前記第2の候補時間に前記第2のリソースを使用して実行される前記第2のタスクを割り当てるステップとを繰り返すことを備える、請求項8に記載のコンピュータによって実行される方法。
【請求項10】
前記候補スケジュールを評価して、前記候補スケジュールパフォーマンススコアを計算するステップは、
前記候補スケジュールを分析して、前記候補スケジュールにおける前記第1のタスクセットと前記第2のタスクセットとの間の依存性の複数の競合を判断するステップ、をさらに備え、前記依存性の競合は、互いに依存するタスク間におけるタスクを実行する時間の競合を示し、
前記依存性の複数の競合に基づいて前記候補スケジュールパフォーマンススコアを生成するステップさらに備える、請求項8または9に記載のコンピュータによって実行される方法。
【請求項11】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記依存性の競合は、
(i)前記依存性が、前記第2のリソースを使用して実行される第3のタスクに対する、前記第1のリソースを使用して実行される第2のタスクの依存性を備えるとき、前記依存性の競合は、前記第1のリソースを使用して実行される前記第2のタスクが、前記第2のリソースを使用して実行される前記第3のタスクよりも前の候補時間を有する場合、または (ii)前記依存性が、前記第1のリソースを使用して実行される第5のタスクに対する、前記第2のリソースを使用して実行される第4のタスクの依存性を備えるとき、前記第2のリソースを使用して実行される第4のタスクが、前記第1のリソースを使用して実行される第5のタスクよりも前の候補時間を有する場合、のうちの少なくとも1つにおいて識別される、請求項8~10のいずれか1項に記載のコンピュータによって実行される方法。
【請求項12】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
(i)前記第2のリソースを使用して実行される第2のタスクに対する、前記第1のリソースを使用して実行される前記第1のタスクの依存性、または
(ii)前記第1のリソースを使用して実行される前記第1のタスクに対する、前記第2のリソースを使用して実行される第3のタスクの依存性、のうちの少なくとも1つを備え、
前記依存性に基づいて、前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を計算するステップは、
前記第2のリソースを使用して実行される前記第2のタスクに対する、前記第1のリソースを使用して実行される前記第1のタスクの依存性である前記(i)が備えられる場合、当該(i)の依存性に基づいて、前記第2のタスクが実行される時間の後であるように前記候補時間を計算するステップ、または
前記第1のリソースを使用して実行される前記第1のタスクに対する、前記第2のリソースを使用して実行される前記第3のタスクの依存性である前記(ii)の依存性が備えられる場合、当該(ii)の依存性に基づいて、前記第3のタスクが実行される時間の前であるように前記候補時間を計算するステップ、のうちの少なくとも1つをさらに備える、請求項8から10のいずれか1項に記載のコンピュータによって実行される方法。
【請求項13】
前記1つ以上の他のリソースは、第2のリソースを含み、
前記第1のリソースを使用して前記第1のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
(i)前記第2のリソースを使用する第3のタスクに対する前記第1のリソースを使用する第2のタスクの依存性、または
(ii)前記第1のリソースを使用する第5のタスクに対する前記第2のリソースを使用する第4のタスクの依存性、のうちの少なくとも1つを備える、請求項8~10および請求項12のいずれか1項に記載のコンピュータによって実行される方法。
【請求項14】
前記コンピュータによって実行される方法は、
前記第2のリソースを使用する前記第3のタスクに対する前記第1のリソースを使用する前記第2のタスクの前記依存性に基づいて、タスク間の実行時間の競合を引き起こすことなく、前記第3のタスクが実行される時間の後であるように前記第1のリソースを使用する前記第2のタスクのための第2の候補時間を計算するステップ、または
前記第1のリソースを使用する前記第5のタスクに対する前記第2のリソースを使用する前記第4のタスクの前記依存性に基づいて、タスク間の実行時間の競合を引き起こすことなく、前記第4のタスクが実行される時間の前であるように前記第1のリソースを使用する前記第5のタスクのための第3の候補時間を計算するステップ、のうちの少なくとも1つをさらに備える、請求項13に記載のコンピュータによって実行される方法。
【請求項15】
前記複数のリソースのための前記候補スケジュールを生成するステップは、前記第1のリソースに、当該リソースを使用するタスクが割当てられていない空き時間を識別するために、
前記候補スケジュールにおける前記第1のリソースを使用する前記第2のタスクのための前記第2の候補時間を使用するステップ、または
前記候補スケジュールにおける前記第1のリソースを使用する前記第5のタスクのための前記第3の候補時間を使用するステップ、のうちの少なくとも1つをさらに備える、請求項14に記載のコンピュータによって実行される方法。
【請求項16】
請求項8~15のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
さまざまなサービスおよび製品を実現するためにコンピューティングデバイスが使用されている。コンピューティングデバイスは、車両を使用して実行されるタスクのスケジューリングなどのスケジューリングサービスを提供し得る。スケジューリングされたタスクは、分散ネットワーク環境(たとえば、クラウドサービス)のデータベースもしくは他の格納構造内、またはローカルコンピュータのデータベースもしくは他の格納構造内に格納されてもよい。ユーザは、コンピューティングデバイスと対話して、スケジューリングされたタスクに対して動作を実行し得る。たとえば、コンピューティングデバイスは、新規タスクの追加、既存のタスクの除去、または既存のタスクの修正に使用されてもよい。
【0002】
スケジューリングサービスによって管理されるさまざまなタスクは、さまざまな車両を使用して実行されるようにスケジューリングされてもよく、そのため、第1の車両を使用して実行されるようにスケジューリングされるタスクもあれば、第2の車両を使用して実行されるようにスケジューリングされるタスクもある。第1の車両を使用して実行されるようにスケジューリングされる第1のタスクと第2の車両を使用して実行されるようにスケジューリングされる第2のタスクとの間には依存性があり得て、これは、既存のスケジュールを修正する試みを複雑にする可能性がある。
【0003】
車両の有効性、タスクの正常終了率を向上させ、関連する利益を増大させ、および/または、車両によって配達されている在庫を移動させるために、新規タスクの時間を効率的に識別して割り当てることが望ましい。
【0004】
残念ながら、一般的な既存の技術は、一部の時間を識別することに限定され、利用可能な他の時間は識別しない。したがって、スケジュールの生成は、時間割り当ての選択肢が限られることによって制限されてきた。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
一実施形態では、コンピューティングシステムが開示されており、上記コンピューティングシステムは、メモリに接続されたプロセッサと、非一時的なコンピュータ読取可能媒体に格納され、命令で構成されたスケジューリングモジュールとを備え、上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を実行させ、当該動作は、複数のタスクを含むスケジューリングデータ構造を修正する要求を受信したことに応答して、上記要求が、複数のリソースから第1のリソースを使用して実行される第1のタスクをスケジューリングすることに向けられていることを判断すること、および/または、ネットワーク通信を介してデータベースから上記スケジューリングデータ構造にアクセスすることを含み、上記スケジューリングデータ構造は、(i)1つ以上の他のリソースを使用して実行される、上記第1のリソースが依存する第1のタスクセットのためのデータレコードと、(ii)上記第1のリソースを使用して実行される、他のリソースが依存する第2のタスクセットのためのデータレコードとを含み、および/または、上記データレコードを分析して、上記1つ以上の他のリソースを使用して実行される上記第1のタスクセットと上記第1のリソースを使用して実行される上記第2のタスクセットとの間の依存性を判断すること、および/または、上記依存性に基づいて、上記第1のリソースを使用して上記第1のタスクを実行するための候補時間を計算すること、および/または、上記第1のリソースのための上記第1のタスクのための上記候補時間を使用して、上記第1のリソースを含む上記複数のリソースのための候補スケジュールを生成すること、および/または、上記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算すること、および/または、上記候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、上記候補スケジュールに基づいて上記スケジューリングデータ構造を修正および再生成して、上記候補時間に上記第1のリソースを使用して実行される上記第1のタスクを割り当てることを含む。
【0006】
上記コンピューティングシステムの別の実施形態では、上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を繰り返し実行させ、当該動作は、1つ以上の依存性に基づいて、上記複数のリソースから第2のリソースを使用して第2のタスクを実行するための第2の候補時間を計算すること、および/または、上記第2のリソースのための上記第2のタスクのための上記第2の候補時間を使用して、上記第2のリソースを含む上記複数のリソースのための第2の候補スケジュールを生成すること、および/または、上記第2の候補スケジュールを評価して、第2の候補スケジュールパフォーマンススコアを計算すること、および/または、上記第2の候補スケジュールパフォーマンススコアが第2の既存のスケジュールの第2の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、上記1つ以上の依存性に基づいて、上記複数のリソースから上記第2のリソースを使用して上記第2のタスクを実行するための第3の候補時間を計算すること、および/または、上記第2の候補スケジュールパフォーマンススコアが上記第2の既存のスケジュールの上記第2の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、上記第2の候補スケジュールに基づいて上記スケジューリングデータ構造を修正および再生成して、上記第2の候補時間に上記第2のリソースを使用して実行される上記第2のタスクを割り当てることを含む。
【0007】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記候補スケジュールを評価して上記候補スケジュールパフォーマンススコアを計算するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を実行させる命令をさらに含み、当該動作は、上記候補スケジュールを分析して、上記候補スケジュールにおける上記第1のタスクセットと上記第2のタスクセットとの間の依存性の複数の競合を判断することと、上記依存性の複数の競合に基づいて上記候補スケジュールパフォーマンススコアを生成することとを含む。
【0008】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記依存性の競合は、(i)第2のリソースを使用して実行される第3のタスクの前の時間を有する、上記第1のリソースを使用して実行される第2のタスクに対応する競合、または(ii)上記第1のリソースを使用して実行される第5のタスクの前の時間を有する、上記第2のリソースを使用して実行される第4のタスクに対応する競合、のうちの少なくとも1つを備え、上記依存性は、上記第2のリソースを使用して実行される上記第3のタスクに対する、上記第1のリソースを使用して実行される上記第2のタスクの依存性を備え、上記依存性は、上記第1のリソースを使用して実行される上記第5のタスクに対する、上記第2のリソースを使用して実行される上記第4のタスクの依存性を備える。
【0009】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記第1のリソースを使用して上記第1のタスクを実行するための上記候補時間を計算するために使用される上記依存性は、(i)第2のリソースを使用して実行される第2のタスクに対する、上記第1のリソースを使用して実行される上記第1のタスクの依存性、または(ii)上記第1のリソースを使用して実行される上記第1のタスクに対する、上記第2のリソースを使用して実行される第3のタスクの依存性、のうちの少なくとも1つを備え、および/または、上記依存性に基づいて、上記第1のリソースを使用して上記第1のタスクを実行するための上記候補時間を計算するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに以下の動作のうちの少なくとも1つを実行させる命令をさらに含み、上記動作は、上記第2のリソースを使用して実行される上記第2のタスクに対する、上記第1のリソースを使用して実行される上記第1のタスクの上記依存性に基づいて、上記第2のタスクの時間の後であるように上記候補時間を計算すること、または、上記第1のリソースを使用して実行される上記第1のタスクに対する、上記第2のリソースを使用して実行される上記第3のタスクの上記依存性に基づいて、上記第3のタスクの時間の前であるように上記候補時間を計算することを含む。
【0010】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記第1のリソースを使用して上記第1のタスクを実行するための上記候補時間を計算するために使用される上記依存性は、(i)第2のリソースのための第3のタスクに対する上記第1のリソースのための第2のタスクの依存性、または(ii)上記第1のリソースのための第5のタスクに対する上記第2のリソースのための第4のタスクの依存性、のうちの少なくとも1つを備え、および/または、上記命令は、上記プロセッサによって実行されると、上記プロセッサに、上記第2のリソースのための上記第3のタスクに対する上記第1のリソースのための上記第2のタスクの上記依存性に基づいて、上記第3のタスクの時間の後であるように上記第1のリソースのための上記第2のタスクのための第2の候補時間を計算すること、または上記第1のリソースのための上記第5のタスクに対する上記第2のリソースのための上記第4のタスクの上記依存性に基づいて、上記第4のタスクの時間の前であるように上記第1のリソースのための上記第5のタスクのための第3の候補時間を計算すること、のうちの少なくとも1つを実行させ、および/または、上記複数のリソースのための上記候補スケジュールを生成するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作のうちの少なくとも1つを実行させる命令をさらに含み、当該動作は、上記候補スケジュールにおける上記第1のリソースのための上記第2のタスクのための上記第2の候補時間を使用すること、または、上記候補スケジュールにおける上記第1のリソースのための上記第5のタスクのための上記第3の候補時間を使用することを含む。
【0011】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記第1のリソースは、第1の車両であり、上記第1のタスクセットは、1つ以上の他の車両を使用して実行され、上記第2のタスクセットは、上記第1の車両によって実行され、および/または、上記候補スケジュールパフォーマンススコアが上記既存のスケジュールの上記既存のスケジュールパフォーマンススコアよりも大きいと判断するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を実行させる命令をさらに含み、当該動作は、上記第1の車両と上記1つ以上の他の車両のうちの少なくとも1つとの間の依存性によってもたらされる上記既存のスケジュールにおける競合を上記候補スケジュールが解決すると判断することを含む。
【0012】
別の実施形態では、プロセッサを備えるコンピューティングデバイスによって実行される、コンピュータによって実行される方法が開示されている。上記コンピュータによって実行される方法は、機能の1つ以上の組み合わせを備え、上記機能は、少なくとも上記プロセッサが、複数のタスクを含むスケジューリングデータ構造を修正する要求を受信するステップ、および/または、少なくとも上記プロセッサが、ネットワーク通信を介してデータベースから上記スケジューリングデータ構造にアクセスするステップを含み、上記スケジューリングデータ構造は、(i)1つ以上の他のリソースを使用して実行される、第1のリソースが依存する第1のタスクセットのためのデータレコード、および/または、(ii)上記第1のリソースを使用して実行される、他のリソースが依存する第2のタスクセットのためのデータレコードを含み、および/または、少なくとも上記プロセッサが、上記データレコードを分析して、上記1つ以上の他のリソースを使用して実行される上記第1のタスクセットと上記第1のリソースを使用して実行される上記第2のタスクセットとの間の依存性を判断するステップ、および/または、少なくとも上記プロセッサが、上記依存性に基づいて、上記第1のリソースを使用して第1のタスクを実行するための候補時間を計算するステップ、および/または、少なくとも上記プロセッサが、上記第1のリソースのための上記第1のタスクのための上記候補時間を使用して、上記第1のリソースを含む上記複数のリソースのための候補スケジュールを生成するステップ、および/または、少なくとも上記プロセッサが、上記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算するステップ、および/または、少なくとも上記プロセッサが、上記候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、上記候補スケジュールに基づいて上記スケジューリングデータ構造を修正および再生成して、上記候補時間に上記第1のリソースを使用して実行される上記第1のタスクを割り当てるステップを含む。
【0013】
別の実施形態では、上記方法は、上記コンピューティングシステムの一部として記載される機能の任意の組み合わせを含んでもよい。
【0014】
別の実施形態では、非一時的なコンピュータ読取可能媒体が開示されており、上記非一時的なコンピュータ読取可能媒体は、コンピューティングデバイスのプロセッサによって実行されると、開示されている方法の機能の任意の組み合わせを実行する格納された命令を(たとえば、1つ以上のプログラムまたはアルゴリズムとして)備える。
【0015】
明細書に組み入れられ、明細書の一部を構成する添付の図面には、さまざまなシステム、方法、および本開示の他の実施形態が示されている。図中に示されている要素境界(たとえば、枠、枠群、または他の形状)は、境界の一実施形態を示していることが理解されるであろう。いくつかの実施形態では、1つの要素は、複数の要素として実現されてもよく、またはこれらの複数の要素は、1つの要素として実現されてもよい。いくつかの実施形態では、別の要素の内部構成要素として示される要素は、外部構成要素として実現されてもよく、逆の場合も同様である。さらに、要素は一定の比率に応じて描かれているわけではない。
【図面の簡単な説明】
【0016】
図1】候補時間にリソースを使用して実行されるタスクを割り当てることに関連付けられたシステムの一実施形態を示す。
図2】候補時間にリソースを使用して実行されるタスクを割り当てることに関連付けられた方法の一実施形態を示す。
図3】スケジューリングデータ構造の一実施形態を示す。
図4】エンティティコンピュータおよびグラフィカルユーザインターフェイスの一実施形態を示す。
図5】スケジューリング命令を有するスケジュール実行部の一実施形態を示す。
図6】モニタインターフェイスを有するスケジュール実行部の一実施形態を示す。
図7】非一時的なコンピュータ読取可能媒体の一実施形態を示す。
図8】開示されているシステムおよび/または方法の例で構成されたコンピューティングシステムの一実施形態を示す。
【発明を実施するための形態】
【0017】
詳細な説明
車両、ローディングベイ、クルー/チームなどのリソースを使用して実行される配達などのタスクをスケジューリングするコンピュータ化されたスケジューリングシステムおよび方法が本明細書に記載されている。一実施形態では、電子スケジュールは、複数のタイムスロットで構成されたデータ構造である。電子スケジュールは、さまざまなタイムスロットにおけるさまざまな時間に実行されるようにスケジューリングされるさまざまなタスクを含み得る。しかし、1つ以上のタスクは、別のタスクとの依存関係を有し得る。たとえば、第1の車両による第1の配達は、第2の車両による別の配達に依存してもよい。したがって、第1の配達は、第2の車両による他の配達の実行/完了後に実行される必要があり得る。これらのタイプの依存性は、電子スケジュールにおいてタスクをどのようにスケジューリングするかに影響を及ぼし、および/または、制限する。
【0018】
ユーザは、スケジューリングシステムによって新規タスクをスケジューリングしようとする場合、この新規タスクを実行するために使用されるリソース、新規タスクと別のタスクとの間の依存関係、および新規タスクを完了させる必要がある期限などの、新規タスクについての入力を提供してもよい。システムは、タスクがリソースに割り当てられない時間(電子スケジュールにおけるタイムスロット)を識別しようとし、この時間を新規タスクに対してディスプレイ画面上に表示する。しかし、来たるべき期限までに新規タスクを至急完了させる必要がある場合、新規タスクの期限前に電子スケジュールにはリソースのための空き時間がないかもしれない。代替的に、新規タスクが別の(たとえば、既存の)タスクに依存しており、(必要な)閾値時間内(たとえば、他のタスクの完了の3時間以内)に新規タスクを実行する必要がある場合、他のタスクの閾値時間内に空き時間がない(空いているタイムスロットがない)かもしれない。
【0019】
したがって、期限前または他のタスクの閾値時間内に新規タスクを完了させるためには、1つ以上の既存のタスクを電子スケジュール内で移動させる必要があるだろう。残念ながら、一般的なスケジュールは、複雑な依存性によって関連付けられた多数のタスクを含み得るので、選り分けたり、アクセスしたり、修正したりするのが困難であることが多い。したがって、ユーザ自身が容易にまたは正確に既存のタスクをさまざまなタイムスロットに移動させて、時間競合を引き起こすことなく依存性に従って新規タスクのために時間を利用できるようにすることはできない。一実施形態において、このスケジューリングシステムは、この問題に対処するためにタスクのスケジュールを生成するように構成される。
【0020】
図1を参照して、候補時間にリソースを使用して実行されるタスクを割り当てることに関連付けられたコンピュータ化されたシステム100の一実施形態を示す。システム100は、コンピュータ上で実行されるように構成され得るコントローラ105を含む。コントローラ105は、リソースを使用して実行されるようにスケジューリングされるタスクを要求している車両ベースの配達サービスのコンピュータなどのエンティティコンピュータ115からタスク要求110を受信したことに基づいて起動されてもよい。たとえば、タスクは、第1のパッケージをローディングベイに配達して第2のパッケージをローディングベイから引き取るアポイントメントであってもよい。コントローラ105は、ネットワーク接続を介してタスク要求110を受信してもよい。
【0021】
スケジューリングデータ検索部120は、タスク要求110を分析して、タスクおよび関連付けられたパラメータを識別する内部データを識別するように構成される。コントローラ105は、スケジューリングデータ検索部120を利用して、タスク要求110について既存のタスクレコードを検討するための基準125を生成する。基準125は、第1のパッケージをローディングベイから引き取る第2のアポイントメントなどの、上記タスクに依存する他のタスク、および第2のパッケージをローディングベイに配達する第3のアポイントメントなどの、上記タスクが依存する他のタスクを指定してもよい。いくつかの例では、基準125は、第1のパッケージを配達して第2のパッケージを引き取るための第1の車両、およびローディングベイなどの、タスクを実行するために使用されるリソースについての情報をさらに指定してもよい。
【0022】
基準125は、タスクをスケジューリングする必要がある時間枠を指定してもよい。たとえば、時間枠は、タスク要求110に基づいて決定されてもよく、開始時点(それ以降にタスクがスケジューリングされ得る)と、終了時点(それ以前にタスクがスケジューリングされ得る)とを指定してもよい。代替的に、時間枠は、開始時点を指定することなく、終了時点(それ以前にタスクがスケジューリングされ得る)を指定してもよい。たとえば、基準125は、車両ベースの配達サービスのクライアントが3日以内に第1のパッケージを(第1の受取人に)配達し、第2のパッケージを(第2の受取人に)配達する必要があることに従って、時間枠として「3日以内」を指定してもよい。
【0023】
基準125は、閾値優先順位(レベル)をさらに指定してもよい。基準125は、閾値優先順位として中程度の優先順位をさらに指定してもよい。たとえば、タスクは、中程度の優先順位を有してもよく、車両ベースの配達サービスは、タスクをスケジューリングする際に同様のまたはより高い優先順位を有するタスクを修正するのではなく、その代わりにより低い優先順位を有するタスクを修正することを考えるだけでよい。別の例では、車両ベースの配達サービスに対するクライアントの値は、中程度の値であってもよく、車両ベースの配達サービスは、車両ベースの配達サービスに対して同様のまたはより高い値を有する顧客に関連付けられたタスクを修正するのではなく、その代わりに車両ベースの配達サービスに対してより低い値を有する顧客に関連付けられたタスクを修正することを考えるだけでよい。
【0024】
別の例では、(新規)タスクの優先順位は、タスクのスケジューリングに割り当てられる(たとえば、プロセッサ、メモリなどの)リソースのレベルを示してもよい。たとえば、タスクの優先順位が高くなればなるほど、タスクをスケジューリングする際に考慮すべきスケジューリングデータ構造130のタイムスロットおよびタスクの数が多くなり、そのため、タスクをスケジューリングする際に時間(スケジューリングデータ構造130におけるタイムスロット)およびタスクを識別するために割り当てられる(たとえば、プロセッサ、メモリなどの)リソースが多くなる。
【0025】
いくつかの例では、2つのリソースを使用して実行されるタスクは、スケジューリングデータ構造130では2つのタスクとして表される。これらの例では、車両およびローディングベイを使用して実行されるタスクは、車両タスクおよびローディングベイタスクとして表される。他の例では、2つのリソースを使用して実行されるタスクは、スケジューリングデータ構造130では単一のタスクとして表される。
【0026】
複数のリソース(車両、ローディングベイなど)のためのタスクレコード135を識別するために、基準125を使用してスケジューリングデータ構造130を分析する。タスクレコード135は、(タスクを実行するリソースとは異なる)他のリソースを使用して実行される、リソース(および/またはタスク)が依存する第1のタスクセットのためのレコードをスケジューリングデータ構造130の中に含んでもよい。たとえば、第2の車両が第2のパッケージをローディングベイに配達する第3のアポイントメントは、スケジューリングデータ構造130において識別されてタスクレコード135に含められてもよい。なぜなら、第1の車両によるタスクの実行(特に、ローディングベイからの第2のパッケージの引き取り)は、第1の車両がローディングベイに到着する前に第2の車両が第2のパッケージをローディングベイに配達することに依存するからである。タスクレコード135は、(タスクを実行するための)リソースを使用して実行される、他のリソースが依存する第2のタスクセットのためのレコードもスケジューリングデータ構造130の中に含んでもよい。たとえば、第3の車両が第1のパッケージをローディングベイから引き取る第2のアポイントメントは、スケジューリングデータ構造130において識別されて、タスクレコード135に含められてもよい。なぜなら、第3の車両による第1のパッケージの引き取りは、第3の車両がローディングベイに到着する前に第1の車両がタスクを実行すること(特に、第1のパッケージをローディングベイに配達すること)に依存するからである。
【0027】
コントローラ105は、スケジューリングデータ分析部140を利用して、タスクレコード135を分析して、第1のタスクセットと第2のタスクセットとの間の依存性を判断する。タスクレコード135の各々は、タスクを実行できる時間を識別すると考えられてもよい。たとえば、第2の車両が第2のパッケージをローディングベイに配達する第3のアポイントメントは、5月3日午後2時にスケジューリングされるように決定されてもよく、第3の車両が第1のパッケージをローディングベイから引き取る第2のアポイントメントは、5月3日午後5時にスケジューリングされるように決定されてもよい。
【0028】
タスクが5月3日午後12時にスケジューリングされる場合、閾値を超える時間にわたってローディングベイからの出発を遅らせることなく、または再度ローディングベイに戻ることなく、タスクによって要求される通りには第1の車両が第2のパッケージを引き取ることができないという判断がなされてもよい。また、タスクが5月3日午後6時にスケジューリングされる場合、閾値を超える時間にわたってローディングベイからの出発を遅らせることなく、または再度ローディングベイに戻ることなく、第2のアポイントメントによって要求される通りには第3の車両が第1のパッケージを引き取ることができないという判断がなされてもよい。また、タスクが5月3日午後4時にスケジューリングされる場合、遅延なく、第2のアポイントメントによって要求される通りに第3の車両が第1のパッケージを引き取ることができ、遅延なく、タスクによって要求される通りに第1の車両が第2のパッケージを引き取ることができるという判断がなされてもよい。したがって、5月3日午後4時は、リソース(第1の車両)を使用してタスクを実行するための候補時間として計算されてもよい。一実施形態では、候補時間は、上記タスクが依存するタスクの実行の第1の閾値時間(3時間)以内、および/または、上記タスクに依存するタスクの実行の第2の閾値時間(2時間)以内に上記タスクが実行されるという判断に基づいて計算される。
【0029】
コントローラ105は、スケジューリングデータ分析部140を利用して、タスクレコード135において識別された複数のリソースのための候補スケジュールを生成する。候補スケジュールは、リソースを使用して実行されるタスクのための候補時間を含む。候補スケジュールは、いくつかのリソースを使用して実行されるいくつかのタスク(配達、引き取りなど)のための更新後の時間、および、他のリソースを使用して実行される他のタスク(配達、引き取りなど)のための既存の時間も含んでもよい。いくつかの例では、候補スケジュールは、タスクおよび/またはタスクのシーケンスの特定の割り当てを考慮してタスクに関連付けられた計算されたタイミングを含む。
【0030】
コントローラ105は、スケジューリングデータ分析部140を利用して、候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算する。たとえば、候補スケジュールパフォーマンススコアは、タスク間の競合の数、遅延の数、ならびに/または、候補スケジュールの実行に起因すると予測されるタスクおよび/もしくはリソース間の依存性によって引き起こされる繰り返しトリップの数に基づいてもよい。別の例では、候補スケジュールパフォーマンススコアは、候補スケジュールにおける依存するタスク間で利用可能な時間的柔軟性(誤りの余地)(たとえば、午後2時の第2の車両によるローディングベイへの第2のパッケージの配達と午後4時のタスクとの間の2時間の時間的柔軟性)に基づいてもよい。
【0031】
コントローラ105は、スケジューリングデータ分析部140を利用して、候補スケジュールパフォーマンススコアと(複数のリソースのための)既存のスケジュールの既存のスケジュールパフォーマンススコアとを比較する。既存のスケジュールは、タスク要求110がコントローラ105によって受信されたときには複数のリソースにわたって既に実行されていてもよい。候補スケジュールパフォーマンススコアが既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、スケジューリングデータ構造130を候補スケジュールに基づいて修正および再生成して、候補時間(5月3日午後4時)にリソース(第1の車両)を使用して実行されるタスクを割り当てる。
【0032】
その代わりに、候補スケジュールパフォーマンススコアが既存のスケジュールパフォーマンススコア以下であるという判断がなされた場合、既存のスケジュールが保存され、候補スケジュールが廃棄され、(リソースを使用してタスクを実行するための新たな候補時間を有する)新たな候補スケジュールが生成され、評価される。いくつかの例では、候補スケジュールパフォーマンススコアが閾値マージンだけ既存のスケジュールパフォーマンススコアよりも大きい場合にのみ、スケジューリングデータ構造130は、候補スケジュールに基づいて修正および再生成される。
【0033】
いくつかの例では、候補時間の計算および/または候補スケジュールの生成の一部として、複数のタスクの各タスクの開始時間案および完了時間案が、(以前に計算された)先行タスクの完了時間に基づいて、(繰り返し)再計算される。再計算は、アルゴリズムを使用して実行されてもよく、このアルゴリズムは、候補時間の計算、候補スケジュールの生成および/または候補スケジュールパフォーマンススコアと既存のスケジュールパフォーマンススコアとの比較(の1つ以上の繰り返し)の一部として、1つ以上の(たとえば、全ての)タスクを繰り返して、先行タスクに基づいて各タスクの完了時間案を再計算する。アルゴリズムは、1つ以上のタスクの時間がもはや変更されなくなるまでタスクを繰り返し続ける。
【0034】
コントローラ105は、候補スケジュールに対応する再生成されたスケジューリングデータ構造130の一部を含むスケジュール命令145を生成して、スケジュール実行部150に提供し、それによってスケジュール実行部150を制御する。したがって、スケジュール命令145は、スケジュール実行部150に提供されて、5月3日午後4時(候補時間)に第1のパッケージをローディングベイに配達して第2のパッケージをローディングベイから引き取るように第1の車両に指示し、5月3日午後2時に第2のパッケージをローディングベイに配達するように第2の車両に指示し、5月3日午後5時に第1のパッケージをローディングベイから引き取るように第3の車両に指示してもよい。
【0035】
より高い優先順位を有するタスクは、より低い優先順位を有するタスクよりも、他のタイムスロットに移動できない確率が高いことに関連付けられてもよいということが理解され得る。すなわち、一例では、閾値優先順位よりも高い優先順位を有するタスクが他のタイムスロットに移動できる可能性があったとしても、閾値優先順位よりも低い優先順位を有する別のタスクが他のタイムスロットに移動できる可能性の方が高い。したがって、まず他のタスクを検討することがより効率的である。この発見的アプローチを使用して、処理能力が小さく、メモリ使用量が少なく、データベースアクセスが少ないなどの状態で適切なタイムスロットを識別することができる。
【0036】
一実施形態では、システム100は、企業組織のためのアプリケーションまたは分散アプリケーションの集合体を含むコンピューティング/データ処理システムである。アプリケーションおよびシステム100は、クラウドベースのネットワーキングシステム、ソフトウェア・アズ・ア・サービス(SaaS)アーキテクチャ、または他のタイプのネットワーク化されたコンピューティングソリューションとともに動作するように構成されてもよく、またはクラウドベースのネットワーキングシステム、SaaSアーキテクチャ、または他のタイプのネットワーク化されたコンピューティングソリューションとして実現されてもよい。一実施形態では、システム100は、少なくとも本明細書に開示されている機能を提供し、コンピュータネットワークを介してシステム100(サーバとして機能)と通信するコンピューティングデバイス/端末を介して多くのユーザによってアクセスされる集中型サーバ側アプリケーションである。
【0037】
図2は、候補時間に第1のリソースを使用して実行される第1のタスクを割り当てることに関連付けられた、コンピュータによって実行される方法200の一実施形態を示す。一実施形態では、方法200は、命令を実行するためのプロセッサ810、メモリ815、および/または、制御命令が生成されるデータ構造を格納するためのディスク830、および/または、ネットワークを介してデータ構造をリモートコンピュータに送信するためのネットワークハードウェアなどの(図8に示される)コンピュータ805のさまざまなコンピューティングリソースを利用して、コントローラ105によって実行される。方法200は、エンティティコンピュータ115からのタスク要求110の受信などのさまざまなトリガに基づいてトリガされてもよい。
【0038】
205において、タスク要求110を受信し、タスク要求110を受信したことに応答して、タスク要求110が、リソース(第1のクルー)を使用して実行されるタスク(穴を掘ること)をスケジューリングすることに向けられていることを判断する。いくつかの例では、タスク要求110は、エンティティコンピュータ115から(コントローラ105をホストする)サーバによって受信される。
【0039】
図4は、タスク要求110を生成するために使用され得るエンティティコンピュータ115上のグラフィカルユーザインターフェイス405の一実施形態を示す。グラフィカルユーザインターフェイス405は、第1のグラフィカルオブジェクト410、第2のグラフィカルオブジェクト415、第3のグラフィカルオブジェクト420、第4のグラフィカルオブジェクト425および第5のグラフィカルオブジェクト430を表示するように制御される。第1のグラフィカルオブジェクト410は、第1のタスクの場所などの一般的情報を選択するユーザ入力を受信するように構成される。第2のグラフィカルオブジェクト415は、第1のタスクが別のタスクに依存していることの表示などの、第1のタスクの依存性情報を選択するユーザ入力を受信するように構成される。第3のグラフィカルオブジェクト420は、第1のタスク(穴を掘ること)を実行するための第1のリソース(第1のクルー)についてのリソース情報を選択するユーザ入力を受信するように構成される。第4のグラフィカルオブジェクト425は、第1のタスクが実行される時間枠(1ヶ月、1シーズン、1年など)を選択するユーザ入力を受信するように構成される。
【0040】
図2に戻って、210において、ネットワーク通信を介してスケジューリングデータ構造130にデータベースからアクセスする。スケジューリングデータ構造130の一実施形態は、図3に示されており、タイムスロット315を割り当てられた複数のタスク305および複数のリソース310と、複数のタスク305のうちの1つ以上に関連付けられた依存されるタスク320および依存するタスク325とを含む。基準125に対応するスケジューリングデータ構造130におけるタスクレコード135がアクセス(ダウンロード)されてもよく、基準125に対応しない他のタスクレコードはアクセスされなくてもよい。
【0041】
アクセスされるタスクレコード135は、1つ以上の他のリソース(他のクルー)を使用して実行される、第1のリソース(第1のクルー)が依存する第1のタスクセットを含む。たとえば、図3は、第1のタスク(穴を掘ること)が第1のリソース(第1のクルー)を使用して実行され、第1のタスクが、第2のリソース(第2のクルー)を使用して実行される第2のタスク(掘る穴の場所をマーキングすること)に依存することを示す。したがって、第2のタスクは、アクセスされるタスクレコード135の第1のタスクセットの中にある。
【0042】
アクセスされるタスクレコード135は、第1のリソースを使用して実行される、他のリソースが依存する第2のタスクセットも含む。たとえば、図3は、第1のタスク(穴を掘ること)が、第3のリソース(第3のクルー)を使用して実行される第3のタスク(穴の中にワイヤを敷設すること)によって依存されることを示す。したがって、第3のタスクは、アクセスされるタスクレコード135の第2のタスクセットの中にある。
【0043】
図2に戻って、215において、タスクレコード135を分析して、1つ以上の他のリソースを使用して実行される第1のタスクセットと第1のリソースを使用して実行される第2のタスクセットとの間の依存性を判断する。たとえば、第4のリソース(第4のクルー)によって実行される第4のタスク(場所のマーキングで使用される装置を配達すること)の実行に対する第2のタスクの依存性などの、第1のタスク(穴を掘ること)と、第2のタスク(掘る穴の場所をマーキングすること)と、第3のタスク(穴の中にワイヤを敷設すること)と、他の関連するタスクとの間の依存性が判断されてもよい。
【0044】
220において、依存性に基づいて、第1のリソースを使用して第1のタスクを実行するための候補時間を計算する。たとえば、第2のタスク(掘る穴の場所をマーキングすること)、第3のタスク(穴の中にワイヤを敷設すること)および第4のタスク(場所のマーキングで使用される装置を配達すること)の時間ならびに依存性に基づいて、第1のタスク(穴を掘ること)について2016年11月1日午後4時という候補時間が決定される。たとえば、第1のリソースを使用して第1のタスクを実行するための候補時間は、第1のタスクが依存する1つ以上のタスクが実行された後の時間であって、第1のタスクに依存する1つ以上のタスクが実行される前の時間であるように決定されてもよい。一実施形態では、候補時間は、第1のタスクが依存するタスクの実行の第1の閾値時間内および/または第1のタスクに依存するタスクの実行の第2の閾値時間内に第1のタスクが実行されるという判断に基づいて計算される。
【0045】
225において、第1のリソースのための第1のタスクのための候補時間を使用して、第1のリソースを含む複数のリソースのための候補スケジュールを生成する。たとえば、候補スケジュールは、2016年11月1日午後4時という候補時間を第1のタスク(穴を掘ること)に割り当ててもよく、第2のタスク、第3のタスクおよび第4のタスクのために既存の時間を維持してもよく、更新後の時間を複数のリソースによって実行されるようにスケジューリングされる1つ以上の他のタスクに割り当ててもよい。
【0046】
230において、候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算する。いくつかの例では、候補スケジュールパフォーマンススコアは、候補スケジュールにおける第1のタスクセットと第2のタスクセットとの間の依存性において識別(または推定)される競合の数に基づく。別のタスクに依存するタスクが他のタスクの前に実行されるようにスケジューリングされる場合に、競合が識別される。たとえば、第6のリソースを使用して実行される第6のタスクの前の時間を第5のタスクが有する場合、第1のリソースを使用して実行される第5のタスクについて競合が判断され、依存性は、第6のタスクに対する第5のタスクの依存性を含む。別の例では、第1のリソースを使用して実行される第8のタスクの前の時間を第7のタスクが有する場合、第6のリソースを使用して実行される第7のタスクについて競合が判断され、依存性は、第8のタスクに対する第7のタスクの依存性を含む。
【0047】
図4に戻って、第5のグラフィカルオブジェクト430は、グラフィカルオブジェクト410,415,420および/または425を介して受信されるユーザ入力に基づいて生成される候補スケジュールについての情報を表示するように構成される。第5のグラフィカルオブジェクト430は、候補スケジュールについての情報を表示するように構成された第6のグラフィカルオブジェクト435と、候補スケジュールのために計算された候補スケジュールパフォーマンススコアを表示するように構成された第7のグラフィカルオブジェクト440と、候補スケジュールのために計算された候補スケジュールパフォーマンススコアと既存のスケジュールのために計算された既存のスケジュールパフォーマンススコアとの比較を表示するように構成された第8のグラフィカルオブジェクト445とを含む。
【0048】
図2に戻って、235において、候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、候補スケジュールに基づいてスケジューリングデータ構造130を修正および再生成して、候補時間に第1のリソースを使用して実行される第1のタスクを割り当てる。たとえば、第1のリソースを使用した第1のタスクの実行が、スケジューリングデータ構造130における候補時間の候補タイムスロットに割り当てられる。スケジューリングデータ構造130における候補タイムスロットに第1のタスクを割り当てることにより、候補時間に第1のリソースによって第1のタスクが実行される。いくつかの例では、スケジューリングデータ構造130(または、修正されるスケジューリングデータ構造130の一部)は、スケジュール実行部150に提供されるスケジュール命令145に含まれる。
【0049】
いくつかの例では、図2の動作のうちの1つ以上は、さまざまなリソースまたはタスクについて反復的に繰り返されて、スケジュールの修正をテストし、(競合を減少させることによって)スケジュールを向上させると判断される修正を組み入れ、スケジュールを向上させないと判断される修正を廃棄する。
【0050】
たとえば、(第2のタスクのための既存の第2の時間とは異なる)第2のリソースを使用して第2のタスクを実行するための第2の候補時間は、複数のリソースを使用して実行されるタスク間で識別される1つ以上の依存性に基づいて計算される。たとえば、第2のリソースを使用して第2のタスクを実行するための第2の候補時間は、第2のタスクが依存する1つ以上のタスクが実行された後の時間であって、第2のタスクに依存する1つ以上のタスクが実行される前の時間であるように決定されてもよい。
【0051】
第2のリソースを含む複数のリソースのための第2の候補スケジュールは、第2のリソースのための第2のタスクのための第2の候補時間を使用して生成される。たとえば、第2の候補スケジュールは、第1のタスクのための候補時間を維持し、第3のタスクおよび第4のタスクのために既存の時間を維持してもよく、更新後の時間を複数のリソースによって実行されるようにスケジューリングされる1つ以上の他のタスクに割り当ててもよい。
【0052】
第2の候補スケジュールを評価して、第2の候補スケジュールパフォーマンススコアを計算する。いくつかの例では、第2の候補スケジュールパフォーマンススコアは、第2の候補スケジュールにおける複数のリソースを使用して実行されるタスク間の依存性において識別(または推定)される競合の数に基づく。
【0053】
第2の候補スケジュールパフォーマンススコアが第2の既存のスケジュールの第2の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、第2のリソースを使用して第2のタスクを実行するための第3の候補時間を1つ以上の依存性に基づいて計算する。たとえば、第2の候補時間および第2の候補スケジュールは、スケジュールを向上させないと判断されるため廃棄され、第2のリソースを使用して第2のタスクを実行するための第3の候補時間が計算される。
【0054】
第2の候補スケジュールパフォーマンススコアが第2の既存のスケジュールの第2の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、第2の候補スケジュールに基づいてスケジューリングデータ構造を修正および再生成して、第2の候補時間に第2のリソースを使用して実行される第2のタスクを割り当てる。たとえば、第2の候補時間および第2の候補スケジュールは、スケジュールを向上させると判断されるため実行される。たとえば、第2のリソースを使用した第2のタスクの実行は、スケジューリングデータ構造130における第2の候補時間の第2の候補タイムスロットに割り当てられる。
【0055】
スケジュール実行部150は、スケジューリングデータ構造130を使用して、候補時間に第1のタスクを第1のリソースによって実行させ、他の時間に実行されるように1つ以上の他のタスクをスケジューリングさせる。いくつかの例では、スケジュール実行部150は、タスクの実行に使用されるリソースのオペレータに物理的/印刷命令を提供してもよく、他の例では、スケジュール実行部150は、スケジュール命令145に従ってクルーまたはそれらの車両のコンピュータなどのリソースを制御するように構成された1つ以上の機械にデジタル命令を提供してもよい。
【0056】
スケジュール命令145の一実施形態は、スケジュール実行部150によって受信されるデータ構造として図5に示されている。スケジュール命令145は、候補時間に第1のリソースを使用して実行される第1のタスクを割り当てるための第1の命令510と、第2の時間から第2のリソースを使用して実行される第2のタスクを割り当て解除するための第2の命令515と、(依存性に基づいて第2のタスクについて計算される)第2の候補時間に第2のリソースを使用して実行される第2のタスクを割り当てるための第3の命令520とを含む。
【0057】
いくつかの例では、スケジュール実行部150は、図6に示されるように、1つ以上のリソースの状態および候補スケジュールの実行をモニタリングする、ということが理解され得る。スケジュール実行部150は、第1のリソースを使用して実行される第1のタスクの状態を表示する第1のインジケータ610と、第2のリソースを使用して実行される第2のタスクの状態を表示する第2のインジケータ615とを表示するモニタインターフェイス605を含む。たとえば、第1のインジケータ610は、スケジュール命令145に従って第1のリソース(第1のクルー)が候補時間に第1のタスクをそのスケジュールに組み入れたことを表示してもよく、第2のインジケータは、第2のリソース(第2のクルー)が第2の候補時間に第2のタスクをそのスケジュールにまだ組み入れていないため、スケジュール命令145に従っていないことを表示してもよい。いくつかの例では、モニタインターフェイス605は、リソースに関連付けられたユーザの印象を示すユーザフィードバックに基づいて生成され、他の例では、モニタインターフェイス605は、リソースのそれぞれのスケジュールの自動分析に基づいて生成される。
【0058】
一実施形態では、本明細書に開示されている技術のうちの少なくとも一部を実行するために使用されるアルゴリズムは、スケジュールに関与する1つ以上のリソースを収集し、スケジュールに対応するイベントテーブルをクリアし、第1のループにおいて収集された1つ以上のリソースを処理し、1つ以上のリソースのうちの第1のリソースに割り当てられる第1のタスクの時間を計算し、第1のタスクについての情報をイベントテーブルに追加し、第2のリソースが第1のタスクのうちの少なくとも1つに依存する場合には、イベントテーブルに追加された第1のタスクを考慮に入れながら、1つ以上のリソースのうちの第2のリソースに割り当てられる第2のタスクの時間を計算し、第2のタスクについての情報をイベントテーブルに追加する。アルゴリズムは、このプロセスを反復的に繰り返して(たとえば、毎秒数百回)、正確な(競合のない)依存性およびタスクを有するスケジュールを徐々に生成する。イベントテーブルは、1つ以上のタスクの推定時間および複数のタスク間の依存性を満たすために必要なイベントを含むハッシュテーブルであってもよい、ということが理解され得る。
【0059】
図7は、非一時的なコンピュータ読取可能媒体705の例を含むシナリオ700の図である。一実施形態では、本明細書に記載されている構成要素のうちの1つ以上は、非一時的なコンピュータ読取可能媒体705に格納されたコントローラ105などのプログラムモジュールとして構成される。プログラムモジュールは、プロセッサによって実行可能な命令710などの格納された命令で構成され、プロセッサによって実行可能な命令710は、少なくともプロセッサ715などのプロセッサによって実行されると、本明細書に記載されている対応する機能をコンピューティングデバイスに実行させる。たとえば、非一時的なコンピュータ読取可能媒体705に格納されたコントローラ105の機能は、プロセッサによって実行可能な命令710としてプロセッサ715によって実行されて、図2の方法200の実施形態740を実行してもよい。
【0060】
非一時的な機械読取可能媒体705は、プロセッサによって実行可能な命令710を含み、プロセッサによって実行可能な命令710は、プロセッサ715によって実行されると、本明細書における提供物のうちの少なくとも一部を実行する。非一時的な機械読取可能媒体705は、メモリ半導体(たとえば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)および/もしくは同期ダイナミックランダムアクセスメモリ(SDRAM)技術を利用する半導体)、ハードディスクドライブのプラッタ、フラッシュメモリデバイス、または、磁気もしくは光ディスク(コンパクトディスク(CD)、デジタル・バーサタイル・ディスク(DVD)もしくはフロッピー(登録商標)ディスクなど)を含む。非一時的な機械読取可能媒体705の例は、コンピュータ読取可能なデータ720を格納し、コンピュータ読取可能なデータ720は、デバイス735のリーダ730による読み取り725(たとえば、ハードディスクドライブの読取ヘッド、またはソリッドステート記憶装置で呼び出される読取動作)を受けると、プロセッサによって実行可能な命令710を表す。いくつかの実施形態では、プロセッサによって実行可能な命令710は、実行されると、たとえば図2の方法200の例のうちの少なくとも一部などの動作を実行する。いくつかの実施形態では、プロセッサによって実行可能な命令710は、たとえば図1のシステム100の例のうちの少なくとも一部などのシステムを実現するように構成される。
【0061】
図8は、本明細書に記載されているシステムおよび方法の例のうちの1つ以上ならびに/または等価物で構成および/またはプログラムされるコンピューティングデバイスの例のシナリオ800を示す。コンピューティングデバイスの例は、バス825によって動作可能に接続されたプロセッサ810、メモリ815および入力/出力ポート820を含むコンピュータ805であってもよい。一例では、コンピュータ805は、図1および図2に示されるシステム100および/または方法200を容易にするように構成されたコントローラ105のロジックを含んでもよい。異なる例では、コントローラ105のロジックは、ハードウェア、格納された命令を有する非一時的なコンピュータ読取可能媒体705、ファームウェア、および/またはそれらの組み合わせにおいて実現されてもよい。コントローラ105のロジックは、バス825に取り付けられたハードウェアコンポーネントとして示されているが、他の実施形態では、コントローラ105のロジックは、プロセッサ810において実現されてもよく、メモリ815に格納されてもよく、またはディスク830に格納されてもよい、ということが理解されるべきである。
【0062】
一実施形態では、コントローラ105のロジックまたはコンピュータ805は、記載の動作を実行するための手段(たとえば、構造:ハードウェア、非一時的なコンピュータ読取可能媒体、ファームウェア)である。いくつかの実施形態では、コンピューティングデバイスは、クラウドコンピューティングシステムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス(SaaS)アーキテクチャにおいて構成されるサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであってもよい。
【0063】
上記手段は、たとえば割り当てのためのルールベースのソースシークエンシングを実行するようにプログラムされた特定用途向け集積回路(ASIC)として実現されてもよい。また、上記手段は、メモリ815に一時的に格納されて、その後プロセッサ810によって実行されるデータ845としてコンピュータ805に提供される格納されたコンピュータによって実行可能な命令として実現されてもよい。
【0064】
コントローラ105のロジックは、割り当てのためのルールベースのソースシークエンシングを実行するための手段(たとえば、ハードウェア、実行可能な命令を格納する非一時的なコンピュータ読取可能媒体705、ファームウェア)も提供してもよい。
【0065】
コンピュータ805の構成の例を一般的に説明すると、プロセッサ810は、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを含む種々のさまざまなプロセッサであってもよい。メモリ815は、揮発性メモリおよび/または不揮発性メモリを含んでもよい。不揮発性メモリは、たとえば、リードオンリメモリ(ROM)、プログラマブルリードオンリメモリ(PROM)などを含んでもよい。揮発性メモリは、たとえば、ランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などを含んでもよい。
【0066】
ディスク830は、たとえば入力/出力(I/O)インターフェイス(たとえば、カード、デバイス)835および入力/出力ポート820を介してコンピュータ805に動作可能に接続されてもよい。ディスク830は、たとえば、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピーディスクドライブ、テープドライブ、ジップドライブ、フラッシュメモリカード、メモリスティックなどであってもよい。さらに、ディスク830は、CD-ROMドライブ、CD-Rドライブ、CD-RWドライブ、DVD ROMなどであってもよい。メモリ815は、たとえばプロセス840および/またはデータ845を格納することができる。ディスク830および/またはメモリ815は、コンピュータ805のリソースを制御して割り当てるオペレーティングシステムを格納することができる。
【0067】
コンピュータ805は、I/Oインターフェイス835および入力/出力ポート820を介して入力/出力(I/O)デバイスと対話してもよい。入力/出力デバイスは、たとえば、キーボード、マイク、ポインティングおよび選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク830、ネットワークデバイス850などであってもよい。入力/出力ポート820は、たとえば、シリアルポート、パラレルポートおよびUSBポートを含んでもよい。I/Oコントローラ855は、I/Oインターフェイス835をバス825に接続してもよい。
【0068】
コンピュータ805は、ネットワーク環境で動作することができるため、I/Oインターフェイス835および/またはI/Oポート820を介してネットワークデバイス850に接続されてもよい。ネットワークデバイス850を介して、コンピュータ805はネットワークと対話してもよい。ネットワークを介して、コンピュータ805はリモートコンピュータに論理的に接続されてもよい。コンピュータ805が対話し得るネットワークは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)および他のネットワークを含むが、これらに限定されるものではない。
【0069】
別の実施形態では、記載の方法および/またはそれらの等価物は、コンピュータによって実行可能な命令で実現されてもよい。したがって、一実施形態では、非一時的なコンピュータ読取可能/記憶媒体は、機械によって実行されると機械(および/または関連の構成要素)に方法を実行させるアルゴリズム/実行可能なアプリケーションの格納されたコンピュータによって実行可能な命令で構成される。機械の例としては、プロセッサ、コンピュータ、クラウドコンピューティングシステムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス(SaaS)アーキテクチャにおいて構成されるサーバ、スマートフォンなどが挙げられるが、これらに限定されるものではない。一実施形態では、コンピューティングデバイスは、開示されている方法のうちのいずれかを実行するように構成された1つ以上の実行可能なアルゴリズムで実現される。
【0070】
1つ以上の実施形態では、開示されている方法またはそれらの等価物は、方法を実行するように構成されたコンピュータハードウェアまたは非一時的なコンピュータ読取可能媒体に格納されたモジュールにおいて具体化されるコンピュータ命令のいずれかによって実行され、これらの命令は、少なくともコンピューティングデバイスのプロセッサによって実行されると方法を実行するように構成された実行可能なアルゴリズムとして構成される。
【0071】
説明を簡単にする目的で、図面に示されている方法は、アルゴリズムの一連のブロックとして示され、説明されているが、これらの方法はブロックの順序によって限定されるものではないということが理解されるべきである。いくつかのブロックは、異なる順序であってもよく、および/または、示され、記載されているブロックとは別のブロックと同時であってもよい。さらに、示されているブロックの一部を使用して方法の例を実現してもよい。ブロックは、組み合わせられてもよく、または複数の動作/構成要素に分けられてもよい。さらに、さらなるおよび/または代替の方法は、ブロックに示されていないさらなる動作を利用してもよい。
【0072】
以下は、本明細書で利用されている選択された用語の定義を含む。これらの定義は、用語の範囲内に含まれる、実現するのに使用され得る構成要素のさまざまな例および/または形態を含む。これらの例は、限定的であるように意図されたものではない。用語の単数形も複数形もこれらの定義の範囲内であり得る。
【0073】
「一実施形態」、「実施形態」、「一例」、「例」などへの言及は、そのように記載された実施形態または例が特定の特徴、構造、特質、特性、要素または限定事項を含み得るが、全ての実施形態または例が必ずしもそのような特定の特徴、構造、特質、特性、要素または限定事項を含んでいるとは限らないことを意味する。さらに、「一実施形態では」というフレーズを繰り返し使用することは、同一の実施形態を指す場合もあるが、必ずしも同一の実施形態を指すとは限らない。
【0074】
本明細書における「データ構造」は、メモリ、記憶装置または他のコンピュータ化されたシステムに格納されたコンピューティングシステムにおけるデータの構成である。データ構造は、たとえば、データフィールド、データファイル、データアレイ、データレコード、データベース、データテーブル、グラフ、ツリー、連結リストなどのうちのいずれか1つであってもよい。データ構造は、多くの他のデータ構造(たとえば、データベースは多くのデータレコードを含む)から形成されてもよく、多くの他のデータ構造を含んでもよい。データ構造の他の例も他の実施形態に従って可能である。
【0075】
本明細書における「コンピュータ読取可能媒体」または「コンピュータ記憶媒体」は、実行されたときに開示されている機能のうちの1つ以上を実行するように構成された命令および/またはデータを格納する非一時的な媒体を指す。いくつかの実施形態では、データは、命令として機能してもよい。コンピュータ読取可能媒体は、不揮発性媒体および揮発性媒体を含むがこれらに限定されない形態をとってもよい。不揮発性媒体は、たとえば、光ディスク、磁気ディスクなどを含んでもよい。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリなどを含んでもよい。コンピュータ読取可能媒体の一般的形態は、フロッピ-ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス、コンパクトディスク(CD)、他の光媒体、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、メモリチップまたはカード、メモリスティック、ソリッドステート記憶装置(SSD)、フラッシュドライブ、および、コンピュータ、プロセッサもしくは他の電子デバイスとともに機能し得る他の媒体を含み得るが、これらに限定されるものではない。各タイプの媒体は、一実施形態において選択されて実現される場合、開示されているおよび/またはクレームされている機能のうちの1つ以上を実行するように構成されたアルゴリズムの格納された命令を含んでもよい。
【0076】
本明細書における「ロジック」は、本明細書に開示されている機能または動作のうちのいずれかを実行するように、および/または、別のロジックからの機能または動作、方法および/またはシステムを本明細書に開示されているように実行させるように、コンピュータもしくは電気ハードウェア、実行可能なアプリケーションもしくはプログラムモジュールの格納された命令を有する非一時的な媒体、および/または、これらの組み合わせで実現される構成要素を表す。等価のロジックは、ファームウェア、アルゴリズムでプログラムされたマイクロプロセッサ、ディスクリートロジック(たとえば、ASIC)、少なくとも1つの回路、アナログ回路、デジタル回路、プログラムされたロジックデバイス、アルゴリズムの命令を含むメモリデバイスなどを含んでもよく、これらはいずれも、開示されている機能のうちの1つ以上を実行するように構成されてもよい。一実施形態では、ロジックは、開示されている機能のうちの1つ以上を実行するように構成された1つ以上のゲート、ゲートの組み合わせ、または他の回路構成要素を含んでもよい。複数のロジックが記載されている場合、これらの複数のロジックを1つのロジックに併合させることが可能であってもよい。同様に、単一のロジックが記載されている場合、この単一のロジックを複数のロジック間に分散させることが可能であってもよい。一実施形態では、これらのロジックのうちの1つ以上は、開示されているおよび/またはクレームされている機能を実行することに関連付けられた対応する構造である。どのタイプのロジックを組み込むかの選択は、所望のシステム条件または仕様に基づいてもよい。たとえば、高速化が検討事項である場合には、機能を実行するためにハードウェアが選択されるであろう。低コスト化が検討事項である場合には、機能を実行するために格納された命令/実行可能なアプリケーションが選択されるであろう。
【0077】
「動作可能な接続」、または、エンティティが「動作可能に接続」される接続は、信号、物理的通信および/または論理的通信を送受信することができる接続である。動作可能な接続は、物理インターフェイス、電気インターフェイスおよび/またはデータインターフェイスを含んでもよい。動作可能な接続は、動作可能な制御を可能にするのに十分なインターフェイスおよび/または接続のさまざまな組み合わせを含んでもよい。たとえば、2つのエンティティが、直接的にまたは1つ以上の中間エンティティ(たとえば、プロセッサ、オペレーティングシステム、ロジック、非一時的なコンピュータ読取可能媒体)を介して信号を互いに通信するように動作可能に接続されてもよい。論理的および/または物理的通信チャネルを使用して、動作可能な接続を作り出すことができる。
【0078】
本明細書における「ユーザ」は、1つ(1人)以上の人、コンピュータもしくは他のデバイス、またはこれらの組み合わせを含むが、これらに限定されるものではない。
【0079】
開示されている実施形態を相当詳細に示し、説明してきたが、添付の特許請求の範囲の範囲をこのような詳細に制限または何らかの形で限定することは意図していない。当然のことながら、主題のさまざまな局面を説明する目的で構成要素または方法のあらゆる考えられる組み合わせを記載することは不可能である。したがって、本開示は、示され、説明されている具体的な詳細または例示的な例に限定されるものではない。そのため、本開示は、添付の特許請求の範囲の範囲内に含まれる変更例、変形例およびバリエーションを包含するよう意図される。
【0080】
「含む(includes)」または「含んでいる(including)」という用語が詳細な説明または請求項で利用される限りにおいて、この用語が請求項の中で移行語として利用される場合に解釈されるように、「備えている(comprising)」という用語と同様に包括的であることが意図される。
【0081】
「または」という用語が詳細な説明または請求項で使用される(たとえば、AまたはB)限りにおいて、「AまたはBまたはそれら両方」を意味することが意図される。出願人が「AまたはBのみであり、両方ではない」ことを示そうと思う場合には、「AまたはBのみであり、両方ではない」というフレーズが使用されるであろう。したがって、本明細書における「または」という用語の使用は包括的な使用であり、排他的な使用ではない。
図1
図2
図3
図4
図5
図6
図7
図8