(57)【要約】  候補時間にリソースを使用して実行されるタスクを計算して割り当てることに関連付けられたシステム、方法および他の実施形態について説明する。一実施形態では、方法は、スケジューリングデータ構造にアクセスするステップと、１つ以上の他のリソースを使用して実行される、リソースが依存するタスクのためのデータレコードと、リソースを使用して実行される、他のリソースが依存するタスクのためのデータレコードとを分析するステップとを含む。さまざまなタスク間で判断される依存性に基づいて、リソースを使用してタスクを実行するための候補時間を計算し、タスクのための候補時間を使用して候補スケジュールを生成する。候補スケジュールが既存のスケジュールよりも大きなパフォーマンススコアを有すると判断される場合、候補スケジュールに基づいてスケジューリングデータ構造を修正および再生成する。
2020522063.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読取可能媒体に格納され、命令で構成されたスケジューリングモジュールとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を実行させ、当該動作は、
複数のタスクを含むスケジューリングデータ構造を修正する要求を受信したことに応答して、前記要求が、複数のリソースから第１のリソースを使用して実行される第１のタスクをスケジューリングすることに向けられていることを判断することと、
ネットワーク通信を介してデータベースから前記スケジューリングデータ構造にアクセスすることとを含み、前記スケジューリングデータ構造は、
（ｉ）１つ以上の他のリソースを使用して実行される、前記第１のリソースが依存する第１のタスクセットのためのデータレコードと、
（ｉｉ）前記第１のリソースを使用して実行される、他のリソースが依存する第２のタスクセットのためのデータレコードとを含み、前記動作はさらに、
前記データレコードを分析して、前記１つ以上の他のリソースを使用して実行される前記第１のタスクセットと前記第１のリソースを使用して実行される前記第２のタスクセットとの間の依存性を判断することと、
前記依存性に基づいて、前記第１のリソースを使用して前記第１のタスクを実行するための候補時間を計算することと、
前記第１のリソースのための前記第１のタスクのための前記候補時間を使用して、前記第１のリソースを含む前記複数のリソースのための候補スケジュールを生成することと、
前記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算することと、
前記候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、前記候補スケジュールに基づいて前記スケジューリングデータ構造を修正および再生成して、前記候補時間に前記第１のリソースを使用して実行される前記第１のタスクを割り当てることとを含む、コンピューティングシステム。
【請求項２】
前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を繰り返し実行させ、当該動作は、
１つ以上の依存性に基づいて、前記複数のリソースから第２のリソースを使用して第２のタスクを実行するための第２の候補時間を計算することと、
前記第２のリソースのための前記第２のタスクのための前記第２の候補時間を使用して、前記第２のリソースを含む前記複数のリソースのための第２の候補スケジュールを生成することと、
前記第２の候補スケジュールを評価して、第２の候補スケジュールパフォーマンススコアを計算することと、
前記第２の候補スケジュールパフォーマンススコアが第２の既存のスケジュールの第２の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、前記１つ以上の依存性に基づいて、前記複数のリソースから前記第２のリソースを使用して前記第２のタスクを実行するための第３の候補時間を計算することと、
前記第２の候補スケジュールパフォーマンススコアが前記第２の既存のスケジュールの前記第２の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、前記第２の候補スケジュールに基づいて前記スケジューリングデータ構造を修正および再生成して、前記第２の候補時間に前記第２のリソースを使用して実行される前記第２のタスクを割り当てることとを含む、請求項１に記載のコンピューティングシステム。
【請求項３】
前記候補スケジュールを評価して前記候補スケジュールパフォーマンススコアを計算するための前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を実行させる命令をさらに含み、当該動作は、
前記候補スケジュールを分析して、前記候補スケジュールにおける前記第１のタスクセットと前記第２のタスクセットとの間の依存性の複数の競合を判断することと、
前記依存性の複数の競合に基づいて前記候補スケジュールパフォーマンススコアを生成することとを含む、請求項１または２に記載のコンピューティングシステム。
【請求項４】
前記依存性の競合は、
（ｉ）第２のリソースを使用して実行される第３のタスクの前の時間を有する、前記第１のリソースを使用して実行される第２のタスクに対応する競合、または
（ｉｉ）前記第１のリソースを使用して実行される第５のタスクの前の時間を有する、前記第２のリソースを使用して実行される第４のタスクに対応する競合、のうちの少なくとも１つを備え、
前記依存性は、前記第２のリソースを使用して実行される前記第３のタスクに対する、前記第１のリソースを使用して実行される前記第２のタスクの依存性を備え、
前記依存性は、前記第１のリソースを使用して実行される前記第５のタスクに対する、前記第２のリソースを使用して実行される前記第４のタスクの依存性を備える、請求項３に記載のコンピューティングシステム。
【請求項５】
前記第１のリソースを使用して前記第１のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
（ｉ）第２のリソースを使用して実行される第２のタスクに対する、前記第１のリソースを使用して実行される前記第１のタスクの依存性、または
（ｉｉ）前記第１のリソースを使用して実行される前記第１のタスクに対する、前記第２のリソースを使用して実行される第３のタスクの依存性、のうちの少なくとも１つを備え、
前記依存性に基づいて、前記第１のリソースを使用して前記第１のタスクを実行するための前記候補時間を計算するための前記命令は、前記プロセッサによって実行されると、前記プロセッサに以下の動作のうちの少なくとも１つを実行させる命令をさらに含み、前記動作は、
前記第２のリソースを使用して実行される前記第２のタスクに対する、前記第１のリソースを使用して実行される前記第１のタスクの前記依存性に基づいて、前記第２のタスクの時間の後であるように前記候補時間を計算することと、
前記第１のリソースを使用して実行される前記第１のタスクに対する、前記第２のリソースを使用して実行される前記第３のタスクの前記依存性に基づいて、前記第３のタスクの時間の前であるように前記候補時間を計算することとを含む、請求項１、２または３に記載のコンピューティングシステム。
【請求項６】
前記第１のリソースを使用して前記第１のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
（ｉ）第２のリソースのための第３のタスクに対する前記第１のリソースのための第２のタスクの依存性、または
（ｉｉ）前記第１のリソースのための第５のタスクに対する前記第２のリソースのための第４のタスクの依存性、のうちの少なくとも１つを備え、
前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
前記第２のリソースのための前記第３のタスクに対する前記第１のリソースのための前記第２のタスクの前記依存性に基づいて、前記第３のタスクの時間の後であるように前記第１のリソースのための前記第２のタスクのための第２の候補時間を計算すること、または
前記第１のリソースのための前記第５のタスクに対する前記第２のリソースのための前記第４のタスクの前記依存性に基づいて、前記第４のタスクの時間の前であるように前記第１のリソースのための前記第５のタスクのための第３の候補時間を計算すること、のうちの少なくとも１つを実行させ、
前記複数のリソースのための前記候補スケジュールを生成するための前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作のうちの少なくとも１つを実行させる命令をさらに含み、当該動作は、
前記候補スケジュールにおける前記第１のリソースのための前記第２のタスクのための前記第２の候補時間を使用することと、
前記候補スケジュールにおける前記第１のリソースのための前記第５のタスクのための前記第３の候補時間を使用することとを含む、請求項１、２、３または５に記載のコンピューティングシステム。
【請求項７】
前記第１のリソースは、第１の車両であり、前記第１のタスクセットは、１つ以上の他の車両を使用して実行され、前記第２のタスクセットは、前記第１の車両によって実行され、
前記候補スケジュールパフォーマンススコアが前記既存のスケジュールの前記既存のスケジュールパフォーマンススコアよりも大きいと判断するための前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を実行させる命令をさらに含み、当該動作は、
前記第１の車両と前記１つ以上の他の車両のうちの少なくとも１つとの間の依存性によってもたらされる前記既存のスケジュールにおける競合を前記候補スケジュールが解決すると判断することを含む、請求項１〜６のいずれか１項に記載のコンピューティングシステム。
【請求項８】
プロセッサを備えるコンピューティングデバイスによって実行される、コンピュータによって実行される方法であって、
少なくとも前記プロセッサが、複数のタスクを含むスケジューリングデータ構造を修正する要求を受信するステップと、
少なくとも前記プロセッサが、ネットワーク通信を介してデータベースから前記スケジューリングデータ構造にアクセスするステップとを備え、前記スケジューリングデータ構造は、
（ｉ）１つ以上の他のリソースを使用して実行される、第１のリソースが依存する第１のタスクセットのためのデータレコードと、
（ｉｉ）前記第１のリソースを使用して実行される、他のリソースが依存する第２のタスクセットのためのデータレコードとを含み、前記方法はさらに、
少なくとも前記プロセッサが、前記データレコードを分析して、前記１つ以上の他のリソースを使用して実行される前記第１のタスクセットと前記第１のリソースを使用して実行される前記第２のタスクセットとの間の依存性を判断するステップと、
少なくとも前記プロセッサが、前記依存性に基づいて、前記第１のリソースを使用して第１のタスクを実行するための候補時間を計算するステップと、
少なくとも前記プロセッサが、前記第１のリソースのための前記第１のタスクのための前記候補時間を使用して、前記第１のリソースを含む前記複数のリソースのための候補スケジュールを生成するステップと、
少なくとも前記プロセッサが、前記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算するステップと、
少なくとも前記プロセッサが、前記候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、前記候補スケジュールに基づいて前記スケジューリングデータ構造を修正および再生成して、前記候補時間に前記第１のリソースを使用して実行される前記第１のタスクを割り当てるステップとを備える、コンピュータによって実行される方法。
【請求項９】
前記方法は、さらに、
１つ以上の依存性に基づいて、前記複数のリソースから第２のリソースを使用して第２のタスクを実行するための第２の候補時間を計算するステップと、
前記第２のリソースのための前記第２のタスクのための前記第２の候補時間を使用して、前記第２のリソースを含む前記複数のリソースのための第２の候補スケジュールを生成するステップと、
前記第２の候補スケジュールを評価して、第２の候補スケジュールパフォーマンススコアを計算するステップと、
前記第２の候補スケジュールパフォーマンススコアが第２の既存のスケジュールの第２の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、前記１つ以上の依存性に基づいて、前記複数のリソースから前記第２のリソースを使用して前記第２のタスクを実行するための第３の候補時間を計算するステップと、
前記第２の候補スケジュールパフォーマンススコアが前記第２の既存のスケジュールの前記第２の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、前記第２の候補スケジュールに基づいて前記スケジューリングデータ構造を修正および再生成して、前記第２の候補時間に前記第２のリソースを使用して実行される前記第２のタスクを割り当てるステップとを繰り返すことを備える、請求項８に記載のコンピュータによって実行される方法。
【請求項１０】
前記候補スケジュールを評価して、前記候補スケジュールパフォーマンススコアを計算するステップは、
前記候補スケジュールを分析して、前記候補スケジュールにおける前記第１のタスクセットと前記第２のタスクセットとの間の依存性の複数の競合を判断するステップと、
前記依存性の複数の競合に基づいて前記候補スケジュールパフォーマンススコアを生成するステップとをさらに備える、請求項８または９に記載のコンピュータによって実行される方法。
【請求項１１】
前記依存性の競合は、
（ｉ）第２のリソースを使用して実行される第３のタスクの前の時間を有する、前記第１のリソースを使用して実行される第２のタスクに対応する競合、または
（ｉｉ）前記第１のリソースを使用して実行される第５のタスクの前の時間を有する、前記第２のリソースを使用して実行される第４のタスクに対応する競合、のうちの少なくとも１つを備え、
前記依存性は、前記第２のリソースを使用して実行される前記第３のタスクに対する、前記第１のリソースを使用して実行される前記第２のタスクの依存性を備え、
前記依存性は、前記第１のリソースを使用して実行される前記第５のタスクに対する、前記第２のリソースを使用して実行される前記第４のタスクの依存性を備える、請求項８〜１０のいずれか１項に記載のコンピュータによって実行される方法。
【請求項１２】
前記第１のリソースを使用して前記第１のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
（ｉ）第２のリソースを使用して実行される第２のタスクに対する、前記第１のリソースを使用して実行される前記第１のタスクの依存性、または
（ｉｉ）前記第１のリソースを使用して実行される前記第１のタスクに対する、前記第２のリソースを使用して実行される第３のタスクの依存性、のうちの少なくとも１つを備え、
前記依存性に基づいて、前記第１のリソースを使用して前記第１のタスクを実行するための前記候補時間を計算するステップは、
前記第２のリソースを使用して実行される前記第２のタスクに対する、前記第１のリソースを使用して実行される前記第１のタスクの前記依存性に基づいて、前記第２のタスクの時間の後であるように前記候補時間を計算するステップ、または
前記第１のリソースを使用して実行される前記第１のタスクに対する、前記第２のリソースを使用して実行される前記第３のタスクの前記依存性に基づいて、前記第３のタスクの時間の前であるように前記候補時間を計算するステップ、のうちの少なくとも１つをさらに備える、請求項８、９または１０に記載のコンピュータによって実行される方法。
【請求項１３】
前記第１のリソースを使用して前記第１のタスクを実行するための前記候補時間を計算するために使用される前記依存性は、
（ｉ）第２のリソースのための第３のタスクに対する前記第１のリソースのための第２のタスクの依存性、または
（ｉｉ）前記第１のリソースのための第５のタスクに対する前記第２のリソースのための第４のタスクの依存性、のうちの少なくとも１つを備える、請求項８、９、１０または１２に記載のコンピュータによって実行される方法。
【請求項１４】
前記コンピュータによって実行される方法は、
前記第２のリソースのための前記第３のタスクに対する前記第１のリソースのための前記第２のタスクの前記依存性に基づいて、前記第３のタスクの時間の後であるように前記第１のリソースのための前記第２のタスクのための第２の候補時間を計算するステップ、または
前記第１のリソースのための前記第５のタスクに対する前記第２のリソースのための前記第４のタスクの前記依存性に基づいて、前記第４のタスクの時間の前であるように前記第１のリソースのための前記第５のタスクのための第３の候補時間を計算するステップ、のうちの少なくとも１つをさらに備える、請求項１３に記載のコンピュータによって実行される方法。
【請求項１５】
前記複数のリソースのための前記候補スケジュールを生成するステップは、
前記候補スケジュールにおける前記第１のリソースのための前記第２のタスクのための前記第２の候補時間を使用するステップ、または
前記候補スケジュールにおける前記第１のリソースのための前記第５のタスクのための前記第３の候補時間を使用するステップ、のうちの少なくとも１つをさらに備える、請求項１４に記載のコンピュータによって実行される方法。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
さまざまなサービスおよび製品を実現するためにコンピューティングデバイスが使用されている。コンピューティングデバイスは、車両を使用して実行されるタスクのスケジューリングなどのスケジューリングサービスを提供し得る。スケジューリングされたタスクは、分散ネットワーク環境（たとえば、クラウドサービス）のデータベースもしくは他の格納構造内、またはローカルコンピュータのデータベースもしくは他の格納構造内に格納されてもよい。ユーザは、コンピューティングデバイスと対話して、スケジューリングされたタスクに対して動作を実行し得る。たとえば、コンピューティングデバイスは、新規タスクの追加、既存のタスクの除去、または既存のタスクの修正に使用されてもよい。
【０００２】
スケジューリングサービスによって管理されるさまざまなタスクは、さまざまな車両を使用して実行されるようにスケジューリングされてもよく、そのため、第１の車両を使用して実行されるようにスケジューリングされるタスクもあれば、第２の車両を使用して実行されるようにスケジューリングされるタスクもある。第１の車両を使用して実行されるようにスケジューリングされる第１のタスクと第２の車両を使用して実行されるようにスケジューリングされる第２のタスクとの間には依存性があり得て、これは、既存のスケジュールを修正する試みを複雑にする可能性がある。
【０００３】
車両の有効性、タスクの正常終了率を向上させ、関連する利益を増大させ、および／または、車両によって配達されている在庫を移動させるために、新規タスクの時間を効率的に識別して割り当てることが望ましい。
【０００４】
残念ながら、一般的な既存の技術は、一部の時間を識別することに限定され、利用可能な他の時間は識別しない。したがって、スケジュールの生成は、時間割り当ての選択肢が限られることによって制限されてきた。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
一実施形態では、コンピューティングシステムが開示されており、上記コンピューティングシステムは、メモリに接続されたプロセッサと、非一時的なコンピュータ読取可能媒体に格納され、命令で構成されたスケジューリングモジュールとを備え、上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を実行させ、当該動作は、複数のタスクを含むスケジューリングデータ構造を修正する要求を受信したことに応答して、上記要求が、複数のリソースから第１のリソースを使用して実行される第１のタスクをスケジューリングすることに向けられていることを判断すること、および／または、ネットワーク通信を介してデータベースから上記スケジューリングデータ構造にアクセスすることを含み、上記スケジューリングデータ構造は、（ｉ）１つ以上の他のリソースを使用して実行される、上記第１のリソースが依存する第１のタスクセットのためのデータレコードと、（ｉｉ）上記第１のリソースを使用して実行される、他のリソースが依存する第２のタスクセットのためのデータレコードとを含み、および／または、上記データレコードを分析して、上記１つ以上の他のリソースを使用して実行される上記第１のタスクセットと上記第１のリソースを使用して実行される上記第２のタスクセットとの間の依存性を判断すること、および／または、上記依存性に基づいて、上記第１のリソースを使用して上記第１のタスクを実行するための候補時間を計算すること、および／または、上記第１のリソースのための上記第１のタスクのための上記候補時間を使用して、上記第１のリソースを含む上記複数のリソースのための候補スケジュールを生成すること、および／または、上記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算すること、および／または、上記候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、上記候補スケジュールに基づいて上記スケジューリングデータ構造を修正および再生成して、上記候補時間に上記第１のリソースを使用して実行される上記第１のタスクを割り当てることを含む。
【０００６】
上記コンピューティングシステムの別の実施形態では、上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を繰り返し実行させ、当該動作は、１つ以上の依存性に基づいて、上記複数のリソースから第２のリソースを使用して第２のタスクを実行するための第２の候補時間を計算すること、および／または、上記第２のリソースのための上記第２のタスクのための上記第２の候補時間を使用して、上記第２のリソースを含む上記複数のリソースのための第２の候補スケジュールを生成すること、および／または、上記第２の候補スケジュールを評価して、第２の候補スケジュールパフォーマンススコアを計算すること、および／または、上記第２の候補スケジュールパフォーマンススコアが第２の既存のスケジュールの第２の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、上記１つ以上の依存性に基づいて、上記複数のリソースから上記第２のリソースを使用して上記第２のタスクを実行するための第３の候補時間を計算すること、および／または、上記第２の候補スケジュールパフォーマンススコアが上記第２の既存のスケジュールの上記第２の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、上記第２の候補スケジュールに基づいて上記スケジューリングデータ構造を修正および再生成して、上記第２の候補時間に上記第２のリソースを使用して実行される上記第２のタスクを割り当てることを含む。
【０００７】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記候補スケジュールを評価して上記候補スケジュールパフォーマンススコアを計算するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を実行させる命令をさらに含み、当該動作は、上記候補スケジュールを分析して、上記候補スケジュールにおける上記第１のタスクセットと上記第２のタスクセットとの間の依存性の複数の競合を判断することと、上記依存性の複数の競合に基づいて上記候補スケジュールパフォーマンススコアを生成することとを含む。
【０００８】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記依存性の競合は、（ｉ）第２のリソースを使用して実行される第３のタスクの前の時間を有する、上記第１のリソースを使用して実行される第２のタスクに対応する競合、または（ｉｉ）上記第１のリソースを使用して実行される第５のタスクの前の時間を有する、上記第２のリソースを使用して実行される第４のタスクに対応する競合、のうちの少なくとも１つを備え、上記依存性は、上記第２のリソースを使用して実行される上記第３のタスクに対する、上記第１のリソースを使用して実行される上記第２のタスクの依存性を備え、上記依存性は、上記第１のリソースを使用して実行される上記第５のタスクに対する、上記第２のリソースを使用して実行される上記第４のタスクの依存性を備える。
【０００９】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記第１のリソースを使用して上記第１のタスクを実行するための上記候補時間を計算するために使用される上記依存性は、（ｉ）第２のリソースを使用して実行される第２のタスクに対する、上記第１のリソースを使用して実行される上記第１のタスクの依存性、または（ｉｉ）上記第１のリソースを使用して実行される上記第１のタスクに対する、上記第２のリソースを使用して実行される第３のタスクの依存性、のうちの少なくとも１つを備え、および／または、上記依存性に基づいて、上記第１のリソースを使用して上記第１のタスクを実行するための上記候補時間を計算するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに以下の動作のうちの少なくとも１つを実行させる命令をさらに含み、上記動作は、上記第２のリソースを使用して実行される上記第２のタスクに対する、上記第１のリソースを使用して実行される上記第１のタスクの上記依存性に基づいて、上記第２のタスクの時間の後であるように上記候補時間を計算すること、または、上記第１のリソースを使用して実行される上記第１のタスクに対する、上記第２のリソースを使用して実行される上記第３のタスクの上記依存性に基づいて、上記第３のタスクの時間の前であるように上記候補時間を計算することを含む。
【００１０】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記第１のリソースを使用して上記第１のタスクを実行するための上記候補時間を計算するために使用される上記依存性は、（ｉ）第２のリソースのための第３のタスクに対する上記第１のリソースのための第２のタスクの依存性、または（ｉｉ）上記第１のリソースのための第５のタスクに対する上記第２のリソースのための第４のタスクの依存性、のうちの少なくとも１つを備え、および／または、上記命令は、上記プロセッサによって実行されると、上記プロセッサに、上記第２のリソースのための上記第３のタスクに対する上記第１のリソースのための上記第２のタスクの上記依存性に基づいて、上記第３のタスクの時間の後であるように上記第１のリソースのための上記第２のタスクのための第２の候補時間を計算すること、または上記第１のリソースのための上記第５のタスクに対する上記第２のリソースのための上記第４のタスクの上記依存性に基づいて、上記第４のタスクの時間の前であるように上記第１のリソースのための上記第５のタスクのための第３の候補時間を計算すること、のうちの少なくとも１つを実行させ、および／または、上記複数のリソースのための上記候補スケジュールを生成するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作のうちの少なくとも１つを実行させる命令をさらに含み、当該動作は、上記候補スケジュールにおける上記第１のリソースのための上記第２のタスクのための上記第２の候補時間を使用すること、または、上記候補スケジュールにおける上記第１のリソースのための上記第５のタスクのための上記第３の候補時間を使用することを含む。
【００１１】
上記コンピューティングシステムからの構成要素の任意の組み合わせの別の実施形態では、上記第１のリソースは、第１の車両であり、上記第１のタスクセットは、１つ以上の他の車両を使用して実行され、上記第２のタスクセットは、上記第１の車両によって実行され、および／または、上記候補スケジュールパフォーマンススコアが上記既存のスケジュールの上記既存のスケジュールパフォーマンススコアよりも大きいと判断するための上記命令は、上記プロセッサによって実行されると、上記プロセッサに動作を実行させる命令をさらに含み、当該動作は、上記第１の車両と上記１つ以上の他の車両のうちの少なくとも１つとの間の依存性によってもたらされる上記既存のスケジュールにおける競合を上記候補スケジュールが解決すると判断することを含む。
【００１２】
別の実施形態では、プロセッサを備えるコンピューティングデバイスによって実行される、コンピュータによって実行される方法が開示されている。上記コンピュータによって実行される方法は、機能の１つ以上の組み合わせを備え、上記機能は、少なくとも上記プロセッサが、複数のタスクを含むスケジューリングデータ構造を修正する要求を受信するステップ、および／または、少なくとも上記プロセッサが、ネットワーク通信を介してデータベースから上記スケジューリングデータ構造にアクセスするステップを含み、上記スケジューリングデータ構造は、（ｉ）１つ以上の他のリソースを使用して実行される、第１のリソースが依存する第１のタスクセットのためのデータレコード、および／または、（ｉｉ）上記第１のリソースを使用して実行される、他のリソースが依存する第２のタスクセットのためのデータレコードを含み、および／または、少なくとも上記プロセッサが、上記データレコードを分析して、上記１つ以上の他のリソースを使用して実行される上記第１のタスクセットと上記第１のリソースを使用して実行される上記第２のタスクセットとの間の依存性を判断するステップ、および／または、少なくとも上記プロセッサが、上記依存性に基づいて、上記第１のリソースを使用して第１のタスクを実行するための候補時間を計算するステップ、および／または、少なくとも上記プロセッサが、上記第１のリソースのための上記第１のタスクのための上記候補時間を使用して、上記第１のリソースを含む上記複数のリソースのための候補スケジュールを生成するステップ、および／または、少なくとも上記プロセッサが、上記候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算するステップ、および／または、少なくとも上記プロセッサが、上記候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、上記候補スケジュールに基づいて上記スケジューリングデータ構造を修正および再生成して、上記候補時間に上記第１のリソースを使用して実行される上記第１のタスクを割り当てるステップを含む。
【００１３】
別の実施形態では、上記方法は、上記コンピューティングシステムの一部として記載される機能の任意の組み合わせを含んでもよい。
【００１４】
別の実施形態では、非一時的なコンピュータ読取可能媒体が開示されており、上記非一時的なコンピュータ読取可能媒体は、コンピューティングデバイスのプロセッサによって実行されると、開示されている方法の機能の任意の組み合わせを実行する格納された命令を（たとえば、１つ以上のプログラムまたはアルゴリズムとして）備える。
【００１５】
明細書に組み入れられ、明細書の一部を構成する添付の図面には、さまざまなシステム、方法、および本開示の他の実施形態が示されている。図中に示されている要素境界（たとえば、枠、枠群、または他の形状）は、境界の一実施形態を示していることが理解されるであろう。いくつかの実施形態では、１つの要素は、複数の要素として実現されてもよく、またはこれらの複数の要素は、１つの要素として実現されてもよい。いくつかの実施形態では、別の要素の内部構成要素として示される要素は、外部構成要素として実現されてもよく、逆の場合も同様である。さらに、要素は一定の比率に応じて描かれているわけではない。
【図面の簡単な説明】
【００１６】
【図１】候補時間にリソースを使用して実行されるタスクを割り当てることに関連付けられたシステムの一実施形態を示す。
【図２】候補時間にリソースを使用して実行されるタスクを割り当てることに関連付けられた方法の一実施形態を示す。
【図３】スケジューリングデータ構造の一実施形態を示す。
【図４】エンティティコンピュータおよびグラフィカルユーザインターフェイスの一実施形態を示す。
【図５】スケジューリング命令を有するスケジュール実行部の一実施形態を示す。
【図６】モニタインターフェイスを有するスケジュール実行部の一実施形態を示す。
【図７】非一時的なコンピュータ読取可能媒体の一実施形態を示す。
【図８】開示されているシステムおよび／または方法の例で構成されたコンピューティングシステムの一実施形態を示す。
【発明を実施するための形態】
【００１７】
詳細な説明
車両、ローディングベイ、クルー／チームなどのリソースを使用して実行される配達などのタスクをスケジューリングするコンピュータ化されたスケジューリングシステムおよび方法が本明細書に記載されている。一実施形態では、電子スケジュールは、複数のタイムスロットで構成されたデータ構造である。電子スケジュールは、さまざまなタイムスロットにおけるさまざまな時間に実行されるようにスケジューリングされるさまざまなタスクを含み得る。しかし、１つ以上のタスクは、別のタスクとの依存関係を有し得る。たとえば、第１の車両による第１の配達は、第２の車両による別の配達に依存してもよい。したがって、第１の配達は、第２の車両による他の配達の実行／完了後に実行される必要があり得る。これらのタイプの依存性は、電子スケジュールにおいてタスクをどのようにスケジューリングするかに影響を及ぼし、および／または、制限する。
【００１８】
ユーザは、スケジューリングシステムによって新規タスクをスケジューリングしようとする場合、この新規タスクを実行するために使用されるリソース、新規タスクと別のタスクとの間の依存関係、および新規タスクを完了させる必要がある期限などの、新規タスクについての入力を提供してもよい。システムは、タスクがリソースに割り当てられない時間（電子スケジュールにおけるタイムスロット）を識別しようとし、この時間を新規タスクに対してディスプレイ画面上に表示する。しかし、来たるべき期限までに新規タスクを至急完了させる必要がある場合、新規タスクの期限前に電子スケジュールにはリソースのための空き時間がないかもしれない。代替的に、新規タスクが別の（たとえば、既存の）タスクに依存しており、（必要な）閾値時間内（たとえば、他のタスクの完了の３時間以内）に新規タスクを実行する必要がある場合、他のタスクの閾値時間内に空き時間がない（空いているタイムスロットがない）かもしれない。
【００１９】
したがって、期限前または他のタスクの閾値時間内に新規タスクを完了させるためには、１つ以上の既存のタスクを電子スケジュール内で移動させる必要があるだろう。残念ながら、一般的なスケジュールは、複雑な依存性によって関連付けられた多数のタスクを含み得るので、選り分けたり、アクセスしたり、修正したりするのが困難であることが多い。したがって、ユーザ自身が容易にまたは正確に既存のタスクをさまざまなタイムスロットに移動させて、時間競合を引き起こすことなく依存性に従って新規タスクのために時間を利用できるようにすることはできない。一実施形態において、このスケジューリングシステムは、この問題に対処するためにタスクのスケジュールを生成するように構成される。
【００２０】
図１を参照して、候補時間にリソースを使用して実行されるタスクを割り当てることに関連付けられたコンピュータ化されたシステム１００の一実施形態を示す。システム１００は、コンピュータ上で実行されるように構成され得るコントローラ１０５を含む。コントローラ１０５は、リソースを使用して実行されるようにスケジューリングされるタスクを要求している車両ベースの配達サービスのコンピュータなどのエンティティコンピュータ１１５からタスク要求１１０を受信したことに基づいて起動されてもよい。たとえば、タスクは、第１のパッケージをローディングベイに配達して第２のパッケージをローディングベイから引き取るアポイントメントであってもよい。コントローラ１０５は、ネットワーク接続を介してタスク要求１１０を受信してもよい。
【００２１】
スケジューリングデータ検索部１２０は、タスク要求１１０を分析して、タスクおよび関連付けられたパラメータを識別する内部データを識別するように構成される。コントローラ１０５は、スケジューリングデータ検索部１２０を利用して、タスク要求１１０について既存のタスクレコードを検討するための基準１２５を生成する。基準１２５は、第１のパッケージをローディングベイから引き取る第２のアポイントメントなどの、上記タスクに依存する他のタスク、および第２のパッケージをローディングベイに配達する第３のアポイントメントなどの、上記タスクが依存する他のタスクを指定してもよい。いくつかの例では、基準１２５は、第１のパッケージを配達して第２のパッケージを引き取るための第１の車両、およびローディングベイなどの、タスクを実行するために使用されるリソースについての情報をさらに指定してもよい。
【００２２】
基準１２５は、タスクをスケジューリングする必要がある時間枠を指定してもよい。たとえば、時間枠は、タスク要求１１０に基づいて決定されてもよく、開始時点（それ以降にタスクがスケジューリングされ得る）と、終了時点（それ以前にタスクがスケジューリングされ得る）とを指定してもよい。代替的に、時間枠は、開始時点を指定することなく、終了時点（それ以前にタスクがスケジューリングされ得る）を指定してもよい。たとえば、基準１２５は、車両ベースの配達サービスのクライアントが３日以内に第１のパッケージを（第１の受取人に）配達し、第２のパッケージを（第２の受取人に）配達する必要があることに従って、時間枠として「３日以内」を指定してもよい。
【００２３】
基準１２５は、閾値優先順位（レベル）をさらに指定してもよい。基準１２５は、閾値優先順位として中程度の優先順位をさらに指定してもよい。たとえば、タスクは、中程度の優先順位を有してもよく、車両ベースの配達サービスは、タスクをスケジューリングする際に同様のまたはより高い優先順位を有するタスクを修正するのではなく、その代わりにより低い優先順位を有するタスクを修正することを考えるだけでよい。別の例では、車両ベースの配達サービスに対するクライアントの値は、中程度の値であってもよく、車両ベースの配達サービスは、車両ベースの配達サービスに対して同様のまたはより高い値を有する顧客に関連付けられたタスクを修正するのではなく、その代わりに車両ベースの配達サービスに対してより低い値を有する顧客に関連付けられたタスクを修正することを考えるだけでよい。
【００２４】
別の例では、（新規）タスクの優先順位は、タスクのスケジューリングに割り当てられる（たとえば、プロセッサ、メモリなどの）リソースのレベルを示してもよい。たとえば、タスクの優先順位が高くなればなるほど、タスクをスケジューリングする際に考慮すべきスケジューリングデータ構造１３０のタイムスロットおよびタスクの数が多くなり、そのため、タスクをスケジューリングする際に時間（スケジューリングデータ構造１３０におけるタイムスロット）およびタスクを識別するために割り当てられる（たとえば、プロセッサ、メモリなどの）リソースが多くなる。
【００２５】
いくつかの例では、２つのリソースを使用して実行されるタスクは、スケジューリングデータ構造１３０では２つのタスクとして表される。これらの例では、車両およびローディングベイを使用して実行されるタスクは、車両タスクおよびローディングベイタスクとして表される。他の例では、２つのリソースを使用して実行されるタスクは、スケジューリングデータ構造１３０では単一のタスクとして表される。
【００２６】
複数のリソース（車両、ローディングベイなど）のためのタスクレコード１３５を識別するために、基準１２５を使用してスケジューリングデータ構造１３０を分析する。タスクレコード１３５は、（タスクを実行するリソースとは異なる）他のリソースを使用して実行される、リソース（および／またはタスク）が依存する第１のタスクセットのためのレコードをスケジューリングデータ構造１３０の中に含んでもよい。たとえば、第２の車両が第２のパッケージをローディングベイに配達する第３のアポイントメントは、スケジューリングデータ構造１３０において識別されてタスクレコード１３５に含められてもよい。なぜなら、第１の車両によるタスクの実行（特に、ローディングベイからの第２のパッケージの引き取り）は、第１の車両がローディングベイに到着する前に第２の車両が第２のパッケージをローディングベイに配達することに依存するからである。タスクレコード１３５は、（タスクを実行するための）リソースを使用して実行される、他のリソースが依存する第２のタスクセットのためのレコードもスケジューリングデータ構造１３０の中に含んでもよい。たとえば、第３の車両が第１のパッケージをローディングベイから引き取る第２のアポイントメントは、スケジューリングデータ構造１３０において識別されて、タスクレコード１３５に含められてもよい。なぜなら、第３の車両による第１のパッケージの引き取りは、第３の車両がローディングベイに到着する前に第１の車両がタスクを実行すること（特に、第１のパッケージをローディングベイに配達すること）に依存するからである。
【００２７】
コントローラ１０５は、スケジューリングデータ分析部１４０を利用して、タスクレコード１３５を分析して、第１のタスクセットと第２のタスクセットとの間の依存性を判断する。タスクレコード１３５の各々は、タスクを実行できる時間を識別すると考えられてもよい。たとえば、第２の車両が第２のパッケージをローディングベイに配達する第３のアポイントメントは、５月３日午後２時にスケジューリングされるように決定されてもよく、第３の車両が第１のパッケージをローディングベイから引き取る第２のアポイントメントは、５月３日午後５時にスケジューリングされるように決定されてもよい。
【００２８】
タスクが５月３日午後１２時にスケジューリングされる場合、閾値を超える時間にわたってローディングベイからの出発を遅らせることなく、または再度ローディングベイに戻ることなく、タスクによって要求される通りには第１の車両が第２のパッケージを引き取ることができないという判断がなされてもよい。また、タスクが５月３日午後６時にスケジューリングされる場合、閾値を超える時間にわたってローディングベイからの出発を遅らせることなく、または再度ローディングベイに戻ることなく、第２のアポイントメントによって要求される通りには第３の車両が第１のパッケージを引き取ることができないという判断がなされてもよい。また、タスクが５月３日午後４時にスケジューリングされる場合、遅延なく、第２のアポイントメントによって要求される通りに第３の車両が第１のパッケージを引き取ることができ、遅延なく、タスクによって要求される通りに第１の車両が第２のパッケージを引き取ることができるという判断がなされてもよい。したがって、５月３日午後４時は、リソース（第１の車両）を使用してタスクを実行するための候補時間として計算されてもよい。一実施形態では、候補時間は、上記タスクが依存するタスクの実行の第１の閾値時間（３時間）以内、および／または、上記タスクに依存するタスクの実行の第２の閾値時間（２時間）以内に上記タスクが実行されるという判断に基づいて計算される。
【００２９】
コントローラ１０５は、スケジューリングデータ分析部１４０を利用して、タスクレコード１３５において識別された複数のリソースのための候補スケジュールを生成する。候補スケジュールは、リソースを使用して実行されるタスクのための候補時間を含む。候補スケジュールは、いくつかのリソースを使用して実行されるいくつかのタスク（配達、引き取りなど）のための更新後の時間、および、他のリソースを使用して実行される他のタスク（配達、引き取りなど）のための既存の時間も含んでもよい。いくつかの例では、候補スケジュールは、タスクおよび／またはタスクのシーケンスの特定の割り当てを考慮してタスクに関連付けられた計算されたタイミングを含む。
【００３０】
コントローラ１０５は、スケジューリングデータ分析部１４０を利用して、候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算する。たとえば、候補スケジュールパフォーマンススコアは、タスク間の競合の数、遅延の数、ならびに／または、候補スケジュールの実行に起因すると予測されるタスクおよび／もしくはリソース間の依存性によって引き起こされる繰り返しトリップの数に基づいてもよい。別の例では、候補スケジュールパフォーマンススコアは、候補スケジュールにおける依存するタスク間で利用可能な時間的柔軟性（誤りの余地）（たとえば、午後２時の第２の車両によるローディングベイへの第２のパッケージの配達と午後４時のタスクとの間の２時間の時間的柔軟性）に基づいてもよい。
【００３１】
コントローラ１０５は、スケジューリングデータ分析部１４０を利用して、候補スケジュールパフォーマンススコアと（複数のリソースのための）既存のスケジュールの既存のスケジュールパフォーマンススコアとを比較する。既存のスケジュールは、タスク要求１１０がコントローラ１０５によって受信されたときには複数のリソースにわたって既に実行されていてもよい。候補スケジュールパフォーマンススコアが既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、スケジューリングデータ構造１３０を候補スケジュールに基づいて修正および再生成して、候補時間（５月３日午後４時）にリソース（第１の車両）を使用して実行されるタスクを割り当てる。
【００３２】
その代わりに、候補スケジュールパフォーマンススコアが既存のスケジュールパフォーマンススコア以下であるという判断がなされた場合、既存のスケジュールが保存され、候補スケジュールが廃棄され、（リソースを使用してタスクを実行するための新たな候補時間を有する）新たな候補スケジュールが生成され、評価される。いくつかの例では、候補スケジュールパフォーマンススコアが閾値マージンだけ既存のスケジュールパフォーマンススコアよりも大きい場合にのみ、スケジューリングデータ構造１３０は、候補スケジュールに基づいて修正および再生成される。
【００３３】
いくつかの例では、候補時間の計算および／または候補スケジュールの生成の一部として、複数のタスクの各タスクの開始時間案および完了時間案が、（以前に計算された）先行タスクの完了時間に基づいて、（繰り返し）再計算される。再計算は、アルゴリズムを使用して実行されてもよく、このアルゴリズムは、候補時間の計算、候補スケジュールの生成および／または候補スケジュールパフォーマンススコアと既存のスケジュールパフォーマンススコアとの比較（の１つ以上の繰り返し）の一部として、１つ以上の（たとえば、全ての）タスクを繰り返して、先行タスクに基づいて各タスクの完了時間案を再計算する。アルゴリズムは、１つ以上のタスクの時間がもはや変更されなくなるまでタスクを繰り返し続ける。
【００３４】
コントローラ１０５は、候補スケジュールに対応する再生成されたスケジューリングデータ構造１３０の一部を含むスケジュール命令１４５を生成して、スケジュール実行部１５０に提供し、それによってスケジュール実行部１５０を制御する。したがって、スケジュール命令１４５は、スケジュール実行部１５０に提供されて、５月３日午後４時（候補時間）に第１のパッケージをローディングベイに配達して第２のパッケージをローディングベイから引き取るように第１の車両に指示し、５月３日午後２時に第２のパッケージをローディングベイに配達するように第２の車両に指示し、５月３日午後５時に第１のパッケージをローディングベイから引き取るように第３の車両に指示してもよい。
【００３５】
より高い優先順位を有するタスクは、より低い優先順位を有するタスクよりも、他のタイムスロットに移動できない確率が高いことに関連付けられてもよいということが理解され得る。すなわち、一例では、閾値優先順位よりも高い優先順位を有するタスクが他のタイムスロットに移動できる可能性があったとしても、閾値優先順位よりも低い優先順位を有する別のタスクが他のタイムスロットに移動できる可能性の方が高い。したがって、まず他のタスクを検討することがより効率的である。この発見的アプローチを使用して、処理能力が小さく、メモリ使用量が少なく、データベースアクセスが少ないなどの状態で適切なタイムスロットを識別することができる。
【００３６】
一実施形態では、システム１００は、企業組織のためのアプリケーションまたは分散アプリケーションの集合体を含むコンピューティング／データ処理システムである。アプリケーションおよびシステム１００は、クラウドベースのネットワーキングシステム、ソフトウェア・アズ・ア・サービス（ＳａａＳ）アーキテクチャ、または他のタイプのネットワーク化されたコンピューティングソリューションとともに動作するように構成されてもよく、またはクラウドベースのネットワーキングシステム、ＳａａＳアーキテクチャ、または他のタイプのネットワーク化されたコンピューティングソリューションとして実現されてもよい。一実施形態では、システム１００は、少なくとも本明細書に開示されている機能を提供し、コンピュータネットワークを介してシステム１００（サーバとして機能）と通信するコンピューティングデバイス／端末を介して多くのユーザによってアクセスされる集中型サーバ側アプリケーションである。
【００３７】
図２は、候補時間に第１のリソースを使用して実行される第１のタスクを割り当てることに関連付けられた、コンピュータによって実行される方法２００の一実施形態を示す。一実施形態では、方法２００は、命令を実行するためのプロセッサ８１０、メモリ８１５、および／または、制御命令が生成されるデータ構造を格納するためのディスク８３０、および／または、ネットワークを介してデータ構造をリモートコンピュータに送信するためのネットワークハードウェアなどの（図８に示される）コンピュータ８０５のさまざまなコンピューティングリソースを利用して、コントローラ１０５によって実行される。方法２００は、エンティティコンピュータ１１５からのタスク要求１１０の受信などのさまざまなトリガに基づいてトリガされてもよい。
【００３８】
２０５において、タスク要求１１０を受信し、タスク要求１１０を受信したことに応答して、タスク要求１１０が、リソース（第１のクルー）を使用して実行されるタスク（穴を掘ること）をスケジューリングすることに向けられていることを判断する。いくつかの例では、タスク要求１１０は、エンティティコンピュータ１１５から（コントローラ１０５をホストする）サーバによって受信される。
【００３９】
図４は、タスク要求１１０を生成するために使用され得るエンティティコンピュータ１１５上のグラフィカルユーザインターフェイス４０５の一実施形態を示す。グラフィカルユーザインターフェイス４０５は、第１のグラフィカルオブジェクト４１０、第２のグラフィカルオブジェクト４１５、第３のグラフィカルオブジェクト４２０、第４のグラフィカルオブジェクト４２５および第５のグラフィカルオブジェクト４３０を表示するように制御される。第１のグラフィカルオブジェクト４１０は、第１のタスクの場所などの一般的情報を選択するユーザ入力を受信するように構成される。第２のグラフィカルオブジェクト４１５は、第１のタスクが別のタスクに依存していることの表示などの、第１のタスクの依存性情報を選択するユーザ入力を受信するように構成される。第３のグラフィカルオブジェクト４２０は、第１のタスク（穴を掘ること）を実行するための第１のリソース（第１のクルー）についてのリソース情報を選択するユーザ入力を受信するように構成される。第４のグラフィカルオブジェクト４２５は、第１のタスクが実行される時間枠（１ヶ月、１シーズン、１年など）を選択するユーザ入力を受信するように構成される。
【００４０】
図２に戻って、２１０において、ネットワーク通信を介してスケジューリングデータ構造１３０にデータベースからアクセスする。スケジューリングデータ構造１３０の一実施形態は、図３に示されており、タイムスロット３１５を割り当てられた複数のタスク３０５および複数のリソース３１０と、複数のタスク３０５のうちの１つ以上に関連付けられた依存されるタスク３２０および依存するタスク３２５とを含む。基準１２５に対応するスケジューリングデータ構造１３０におけるタスクレコード１３５がアクセス（ダウンロード）されてもよく、基準１２５に対応しない他のタスクレコードはアクセスされなくてもよい。
【００４１】
アクセスされるタスクレコード１３５は、１つ以上の他のリソース（他のクルー）を使用して実行される、第１のリソース（第１のクルー）が依存する第１のタスクセットを含む。たとえば、図３は、第１のタスク（穴を掘ること）が第１のリソース（第１のクルー）を使用して実行され、第１のタスクが、第２のリソース（第２のクルー）を使用して実行される第２のタスク（掘る穴の場所をマーキングすること）に依存することを示す。したがって、第２のタスクは、アクセスされるタスクレコード１３５の第１のタスクセットの中にある。
【００４２】
アクセスされるタスクレコード１３５は、第１のリソースを使用して実行される、他のリソースが依存する第２のタスクセットも含む。たとえば、図３は、第１のタスク（穴を掘ること）が、第３のリソース（第３のクルー）を使用して実行される第３のタスク（穴の中にワイヤを敷設すること）によって依存されることを示す。したがって、第３のタスクは、アクセスされるタスクレコード１３５の第２のタスクセットの中にある。
【００４３】
図２に戻って、２１５において、タスクレコード１３５を分析して、１つ以上の他のリソースを使用して実行される第１のタスクセットと第１のリソースを使用して実行される第２のタスクセットとの間の依存性を判断する。たとえば、第４のリソース（第４のクルー）によって実行される第４のタスク（場所のマーキングで使用される装置を配達すること）の実行に対する第２のタスクの依存性などの、第１のタスク（穴を掘ること）と、第２のタスク（掘る穴の場所をマーキングすること）と、第３のタスク（穴の中にワイヤを敷設すること）と、他の関連するタスクとの間の依存性が判断されてもよい。
【００４４】
２２０において、依存性に基づいて、第１のリソースを使用して第１のタスクを実行するための候補時間を計算する。たとえば、第２のタスク（掘る穴の場所をマーキングすること）、第３のタスク（穴の中にワイヤを敷設すること）および第４のタスク（場所のマーキングで使用される装置を配達すること）の時間ならびに依存性に基づいて、第１のタスク（穴を掘ること）について２０１６年１１月１日午後４時という候補時間が決定される。たとえば、第１のリソースを使用して第１のタスクを実行するための候補時間は、第１のタスクが依存する１つ以上のタスクが実行された後の時間であって、第１のタスクに依存する１つ以上のタスクが実行される前の時間であるように決定されてもよい。一実施形態では、候補時間は、第１のタスクが依存するタスクの実行の第１の閾値時間内および／または第１のタスクに依存するタスクの実行の第２の閾値時間内に第１のタスクが実行されるという判断に基づいて計算される。
【００４５】
２２５において、第１のリソースのための第１のタスクのための候補時間を使用して、第１のリソースを含む複数のリソースのための候補スケジュールを生成する。たとえば、候補スケジュールは、２０１６年１１月１日午後４時という候補時間を第１のタスク（穴を掘ること）に割り当ててもよく、第２のタスク、第３のタスクおよび第４のタスクのために既存の時間を維持してもよく、更新後の時間を複数のリソースによって実行されるようにスケジューリングされる１つ以上の他のタスクに割り当ててもよい。
【００４６】
２３０において、候補スケジュールを評価して、候補スケジュールパフォーマンススコアを計算する。いくつかの例では、候補スケジュールパフォーマンススコアは、候補スケジュールにおける第１のタスクセットと第２のタスクセットとの間の依存性において識別（または推定）される競合の数に基づく。別のタスクに依存するタスクが他のタスクの前に実行されるようにスケジューリングされる場合に、競合が識別される。たとえば、第６のリソースを使用して実行される第６のタスクの前の時間を第５のタスクが有する場合、第１のリソースを使用して実行される第５のタスクについて競合が判断され、依存性は、第６のタスクに対する第５のタスクの依存性を含む。別の例では、第１のリソースを使用して実行される第８のタスクの前の時間を第７のタスクが有する場合、第６のリソースを使用して実行される第７のタスクについて競合が判断され、依存性は、第８のタスクに対する第７のタスクの依存性を含む。
【００４７】
図４に戻って、第５のグラフィカルオブジェクト４３０は、グラフィカルオブジェクト４１０，４１５，４２０および／または４２５を介して受信されるユーザ入力に基づいて生成される候補スケジュールについての情報を表示するように構成される。第５のグラフィカルオブジェクト４３０は、候補スケジュールについての情報を表示するように構成された第６のグラフィカルオブジェクト４３５と、候補スケジュールのために計算された候補スケジュールパフォーマンススコアを表示するように構成された第７のグラフィカルオブジェクト４４０と、候補スケジュールのために計算された候補スケジュールパフォーマンススコアと既存のスケジュールのために計算された既存のスケジュールパフォーマンススコアとの比較を表示するように構成された第８のグラフィカルオブジェクト４４５とを含む。
【００４８】
図２に戻って、２３５において、候補スケジュールパフォーマンススコアが既存のスケジュールの既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、候補スケジュールに基づいてスケジューリングデータ構造１３０を修正および再生成して、候補時間に第１のリソースを使用して実行される第１のタスクを割り当てる。たとえば、第１のリソースを使用した第１のタスクの実行が、スケジューリングデータ構造１３０における候補時間の候補タイムスロットに割り当てられる。スケジューリングデータ構造１３０における候補タイムスロットに第１のタスクを割り当てることにより、候補時間に第１のリソースによって第１のタスクが実行される。いくつかの例では、スケジューリングデータ構造１３０（または、修正されるスケジューリングデータ構造１３０の一部）は、スケジュール実行部１５０に提供されるスケジュール命令１４５に含まれる。
【００４９】
いくつかの例では、図２の動作のうちの１つ以上は、さまざまなリソースまたはタスクについて反復的に繰り返されて、スケジュールの修正をテストし、（競合を減少させることによって）スケジュールを向上させると判断される修正を組み入れ、スケジュールを向上させないと判断される修正を廃棄する。
【００５０】
たとえば、（第２のタスクのための既存の第２の時間とは異なる）第２のリソースを使用して第２のタスクを実行するための第２の候補時間は、複数のリソースを使用して実行されるタスク間で識別される１つ以上の依存性に基づいて計算される。たとえば、第２のリソースを使用して第２のタスクを実行するための第２の候補時間は、第２のタスクが依存する１つ以上のタスクが実行された後の時間であって、第２のタスクに依存する１つ以上のタスクが実行される前の時間であるように決定されてもよい。
【００５１】
第２のリソースを含む複数のリソースのための第２の候補スケジュールは、第２のリソースのための第２のタスクのための第２の候補時間を使用して生成される。たとえば、第２の候補スケジュールは、第１のタスクのための候補時間を維持し、第３のタスクおよび第４のタスクのために既存の時間を維持してもよく、更新後の時間を複数のリソースによって実行されるようにスケジューリングされる１つ以上の他のタスクに割り当ててもよい。
【００５２】
第２の候補スケジュールを評価して、第２の候補スケジュールパフォーマンススコアを計算する。いくつかの例では、第２の候補スケジュールパフォーマンススコアは、第２の候補スケジュールにおける複数のリソースを使用して実行されるタスク間の依存性において識別（または推定）される競合の数に基づく。
【００５３】
第２の候補スケジュールパフォーマンススコアが第２の既存のスケジュールの第２の既存のスケジュールパフォーマンススコア以下であると判断したことに応答して、第２のリソースを使用して第２のタスクを実行するための第３の候補時間を１つ以上の依存性に基づいて計算する。たとえば、第２の候補時間および第２の候補スケジュールは、スケジュールを向上させないと判断されるため廃棄され、第２のリソースを使用して第２のタスクを実行するための第３の候補時間が計算される。
【００５４】
第２の候補スケジュールパフォーマンススコアが第２の既存のスケジュールの第２の既存のスケジュールパフォーマンススコアよりも大きいと判断したことに応答して、第２の候補スケジュールに基づいてスケジューリングデータ構造を修正および再生成して、第２の候補時間に第２のリソースを使用して実行される第２のタスクを割り当てる。たとえば、第２の候補時間および第２の候補スケジュールは、スケジュールを向上させると判断されるため実行される。たとえば、第２のリソースを使用した第２のタスクの実行は、スケジューリングデータ構造１３０における第２の候補時間の第２の候補タイムスロットに割り当てられる。
【００５５】
スケジュール実行部１５０は、スケジューリングデータ構造１３０を使用して、候補時間に第１のタスクを第１のリソースによって実行させ、他の時間に実行されるように１つ以上の他のタスクをスケジューリングさせる。いくつかの例では、スケジュール実行部１５０は、タスクの実行に使用されるリソースのオペレータに物理的／印刷命令を提供してもよく、他の例では、スケジュール実行部１５０は、スケジュール命令１４５に従ってクルーまたはそれらの車両のコンピュータなどのリソースを制御するように構成された１つ以上の機械にデジタル命令を提供してもよい。
【００５６】
スケジュール命令１４５の一実施形態は、スケジュール実行部１５０によって受信されるデータ構造として図５に示されている。スケジュール命令１４５は、候補時間に第１のリソースを使用して実行される第１のタスクを割り当てるための第１の命令５１０と、第２の時間から第２のリソースを使用して実行される第２のタスクを割り当て解除するための第２の命令５１５と、（依存性に基づいて第２のタスクについて計算される）第２の候補時間に第２のリソースを使用して実行される第２のタスクを割り当てるための第３の命令５２０とを含む。
【００５７】
いくつかの例では、スケジュール実行部１５０は、図６に示されるように、１つ以上のリソースの状態および候補スケジュールの実行をモニタリングする、ということが理解され得る。スケジュール実行部１５０は、第１のリソースを使用して実行される第１のタスクの状態を表示する第１のインジケータ６１０と、第２のリソースを使用して実行される第２のタスクの状態を表示する第２のインジケータ６１５とを表示するモニタインターフェイス６０５を含む。たとえば、第１のインジケータ６１０は、スケジュール命令１４５に従って第１のリソース（第１のクルー）が候補時間に第１のタスクをそのスケジュールに組み入れたことを表示してもよく、第２のインジケータは、第２のリソース（第２のクルー）が第２の候補時間に第２のタスクをそのスケジュールにまだ組み入れていないため、スケジュール命令１４５に従っていないことを表示してもよい。いくつかの例では、モニタインターフェイス６０５は、リソースに関連付けられたユーザの印象を示すユーザフィードバックに基づいて生成され、他の例では、モニタインターフェイス６０５は、リソースのそれぞれのスケジュールの自動分析に基づいて生成される。
【００５８】
一実施形態では、本明細書に開示されている技術のうちの少なくとも一部を実行するために使用されるアルゴリズムは、スケジュールに関与する１つ以上のリソースを収集し、スケジュールに対応するイベントテーブルをクリアし、第１のループにおいて収集された１つ以上のリソースを処理し、１つ以上のリソースのうちの第１のリソースに割り当てられる第１のタスクの時間を計算し、第１のタスクについての情報をイベントテーブルに追加し、第２のリソースが第１のタスクのうちの少なくとも１つに依存する場合には、イベントテーブルに追加された第１のタスクを考慮に入れながら、１つ以上のリソースのうちの第２のリソースに割り当てられる第２のタスクの時間を計算し、第２のタスクについての情報をイベントテーブルに追加する。アルゴリズムは、このプロセスを反復的に繰り返して（たとえば、毎秒数百回）、正確な（競合のない）依存性およびタスクを有するスケジュールを徐々に生成する。イベントテーブルは、１つ以上のタスクの推定時間および複数のタスク間の依存性を満たすために必要なイベントを含むハッシュテーブルであってもよい、ということが理解され得る。
【００５９】
図７は、非一時的なコンピュータ読取可能媒体７０５の例を含むシナリオ７００の図である。一実施形態では、本明細書に記載されている構成要素のうちの１つ以上は、非一時的なコンピュータ読取可能媒体７０５に格納されたコントローラ１０５などのプログラムモジュールとして構成される。プログラムモジュールは、プロセッサによって実行可能な命令７１０などの格納された命令で構成され、プロセッサによって実行可能な命令７１０は、少なくともプロセッサ７１５などのプロセッサによって実行されると、本明細書に記載されている対応する機能をコンピューティングデバイスに実行させる。たとえば、非一時的なコンピュータ読取可能媒体７０５に格納されたコントローラ１０５の機能は、プロセッサによって実行可能な命令７１０としてプロセッサ７１５によって実行されて、図２の方法２００の実施形態７４０を実行してもよい。
【００６０】
非一時的な機械読取可能媒体７０５は、プロセッサによって実行可能な命令７１０を含み、プロセッサによって実行可能な命令７１０は、プロセッサ７１５によって実行されると、本明細書における提供物のうちの少なくとも一部を実行する。非一時的な機械読取可能媒体７０５は、メモリ半導体（たとえば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）および／もしくは同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）技術を利用する半導体）、ハードディスクドライブのプラッタ、フラッシュメモリデバイス、または、磁気もしくは光ディスク（コンパクトディスク（ＣＤ）、デジタル・バーサタイル・ディスク（ＤＶＤ）もしくはフロッピー（登録商標）ディスクなど）を含む。非一時的な機械読取可能媒体７０５の例は、コンピュータ読取可能なデータ７２０を格納し、コンピュータ読取可能なデータ７２０は、デバイス７３５のリーダ７３０による読み取り７２５（たとえば、ハードディスクドライブの読取ヘッド、またはソリッドステート記憶装置で呼び出される読取動作）を受けると、プロセッサによって実行可能な命令７１０を表す。いくつかの実施形態では、プロセッサによって実行可能な命令７１０は、実行されると、たとえば図２の方法２００の例のうちの少なくとも一部などの動作を実行する。いくつかの実施形態では、プロセッサによって実行可能な命令７１０は、たとえば図１のシステム１００の例のうちの少なくとも一部などのシステムを実現するように構成される。
【００６１】
図８は、本明細書に記載されているシステムおよび方法の例のうちの１つ以上ならびに／または等価物で構成および／またはプログラムされるコンピューティングデバイスの例のシナリオ８００を示す。コンピューティングデバイスの例は、バス８２５によって動作可能に接続されたプロセッサ８１０、メモリ８１５および入力／出力ポート８２０を含むコンピュータ８０５であってもよい。一例では、コンピュータ８０５は、図１および図２に示されるシステム１００および／または方法２００を容易にするように構成されたコントローラ１０５のロジックを含んでもよい。異なる例では、コントローラ１０５のロジックは、ハードウェア、格納された命令を有する非一時的なコンピュータ読取可能媒体７０５、ファームウェア、および／またはそれらの組み合わせにおいて実現されてもよい。コントローラ１０５のロジックは、バス８２５に取り付けられたハードウェアコンポーネントとして示されているが、他の実施形態では、コントローラ１０５のロジックは、プロセッサ８１０において実現されてもよく、メモリ８１５に格納されてもよく、またはディスク８３０に格納されてもよい、ということが理解されるべきである。
【００６２】
一実施形態では、コントローラ１０５のロジックまたはコンピュータ８０５は、記載の動作を実行するための手段（たとえば、構造：ハードウェア、非一時的なコンピュータ読取可能媒体、ファームウェア）である。いくつかの実施形態では、コンピューティングデバイスは、クラウドコンピューティングシステムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス（ＳａａＳ）アーキテクチャにおいて構成されるサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであってもよい。
【００６３】
上記手段は、たとえば割り当てのためのルールベースのソースシークエンシングを実行するようにプログラムされた特定用途向け集積回路（ＡＳＩＣ）として実現されてもよい。また、上記手段は、メモリ８１５に一時的に格納されて、その後プロセッサ８１０によって実行されるデータ８４５としてコンピュータ８０５に提供される格納されたコンピュータによって実行可能な命令として実現されてもよい。
【００６４】
コントローラ１０５のロジックは、割り当てのためのルールベースのソースシークエンシングを実行するための手段（たとえば、ハードウェア、実行可能な命令を格納する非一時的なコンピュータ読取可能媒体７０５、ファームウェア）も提供してもよい。
【００６５】
コンピュータ８０５の構成の例を一般的に説明すると、プロセッサ８１０は、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを含む種々のさまざまなプロセッサであってもよい。メモリ８１５は、揮発性メモリおよび／または不揮発性メモリを含んでもよい。不揮発性メモリは、たとえば、リードオンリメモリ（ＲＯＭ）、プログラマブルリードオンリメモリ（ＰＲＯＭ）などを含んでもよい。揮発性メモリは、たとえば、ランダムアクセスメモリ（ＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）などを含んでもよい。
【００６６】
ディスク８３０は、たとえば入力／出力（Ｉ／Ｏ）インターフェイス（たとえば、カード、デバイス）８３５および入力／出力ポート８２０を介してコンピュータ８０５に動作可能に接続されてもよい。ディスク８３０は、たとえば、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピーディスクドライブ、テープドライブ、ジップドライブ、フラッシュメモリカード、メモリスティックなどであってもよい。さらに、ディスク８３０は、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒドライブ、ＣＤ−ＲＷドライブ、ＤＶＤ  ＲＯＭなどであってもよい。メモリ８１５は、たとえばプロセス８４０および／またはデータ８４５を格納することができる。ディスク８３０および／またはメモリ８１５は、コンピュータ８０５のリソースを制御して割り当てるオペレーティングシステムを格納することができる。
【００６７】
コンピュータ８０５は、Ｉ／Ｏインターフェイス８３５および入力／出力ポート８２０を介して入力／出力（Ｉ／Ｏ）デバイスと対話してもよい。入力／出力デバイスは、たとえば、キーボード、マイク、ポインティングおよび選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク８３０、ネットワークデバイス８５０などであってもよい。入力／出力ポート８２０は、たとえば、シリアルポート、パラレルポートおよびＵＳＢポートを含んでもよい。Ｉ／Ｏコントローラ８５５は、Ｉ／Ｏインターフェイス８３５をバス８２５に接続してもよい。
【００６８】
コンピュータ８０５は、ネットワーク環境で動作することができるため、Ｉ／Ｏインターフェイス８３５および／またはＩ／Ｏポート８２０を介してネットワークデバイス８５０に接続されてもよい。ネットワークデバイス８５０を介して、コンピュータ８０５はネットワークと対話してもよい。ネットワークを介して、コンピュータ８０５はリモートコンピュータに論理的に接続されてもよい。コンピュータ８０５が対話し得るネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）および他のネットワークを含むが、これらに限定されるものではない。
【００６９】
別の実施形態では、記載の方法および／またはそれらの等価物は、コンピュータによって実行可能な命令で実現されてもよい。したがって、一実施形態では、非一時的なコンピュータ読取可能／記憶媒体は、機械によって実行されると機械（および／または関連の構成要素）に方法を実行させるアルゴリズム／実行可能なアプリケーションの格納されたコンピュータによって実行可能な命令で構成される。機械の例としては、プロセッサ、コンピュータ、クラウドコンピューティングシステムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス（ＳａａＳ）アーキテクチャにおいて構成されるサーバ、スマートフォンなどが挙げられるが、これらに限定されるものではない。一実施形態では、コンピューティングデバイスは、開示されている方法のうちのいずれかを実行するように構成された１つ以上の実行可能なアルゴリズムで実現される。
【００７０】
１つ以上の実施形態では、開示されている方法またはそれらの等価物は、方法を実行するように構成されたコンピュータハードウェアまたは非一時的なコンピュータ読取可能媒体に格納されたモジュールにおいて具体化されるコンピュータ命令のいずれかによって実行され、これらの命令は、少なくともコンピューティングデバイスのプロセッサによって実行されると方法を実行するように構成された実行可能なアルゴリズムとして構成される。
【００７１】
説明を簡単にする目的で、図面に示されている方法は、アルゴリズムの一連のブロックとして示され、説明されているが、これらの方法はブロックの順序によって限定されるものではないということが理解されるべきである。いくつかのブロックは、異なる順序であってもよく、および／または、示され、記載されているブロックとは別のブロックと同時であってもよい。さらに、示されているブロックの一部を使用して方法の例を実現してもよい。ブロックは、組み合わせられてもよく、または複数の動作／構成要素に分けられてもよい。さらに、さらなるおよび／または代替の方法は、ブロックに示されていないさらなる動作を利用してもよい。
【００７２】
以下は、本明細書で利用されている選択された用語の定義を含む。これらの定義は、用語の範囲内に含まれる、実現するのに使用され得る構成要素のさまざまな例および／または形態を含む。これらの例は、限定的であるように意図されたものではない。用語の単数形も複数形もこれらの定義の範囲内であり得る。
【００７３】
「一実施形態」、「実施形態」、「一例」、「例」などへの言及は、そのように記載された実施形態または例が特定の特徴、構造、特質、特性、要素または限定事項を含み得るが、全ての実施形態または例が必ずしもそのような特定の特徴、構造、特質、特性、要素または限定事項を含んでいるとは限らないことを意味する。さらに、「一実施形態では」というフレーズを繰り返し使用することは、同一の実施形態を指す場合もあるが、必ずしも同一の実施形態を指すとは限らない。
【００７４】
本明細書における「データ構造」は、メモリ、記憶装置または他のコンピュータ化されたシステムに格納されたコンピューティングシステムにおけるデータの構成である。データ構造は、たとえば、データフィールド、データファイル、データアレイ、データレコード、データベース、データテーブル、グラフ、ツリー、連結リストなどのうちのいずれか１つであってもよい。データ構造は、多くの他のデータ構造（たとえば、データベースは多くのデータレコードを含む）から形成されてもよく、多くの他のデータ構造を含んでもよい。データ構造の他の例も他の実施形態に従って可能である。
【００７５】
本明細書における「コンピュータ読取可能媒体」または「コンピュータ記憶媒体」は、実行されたときに開示されている機能のうちの１つ以上を実行するように構成された命令および／またはデータを格納する非一時的な媒体を指す。いくつかの実施形態では、データは、命令として機能してもよい。コンピュータ読取可能媒体は、不揮発性媒体および揮発性媒体を含むがこれらに限定されない形態をとってもよい。不揮発性媒体は、たとえば、光ディスク、磁気ディスクなどを含んでもよい。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリなどを含んでもよい。コンピュータ読取可能媒体の一般的形態は、フロッピ−ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス、コンパクトディスク（ＣＤ）、他の光媒体、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、メモリチップまたはカード、メモリスティック、ソリッドステート記憶装置（ＳＳＤ）、フラッシュドライブ、および、コンピュータ、プロセッサもしくは他の電子デバイスとともに機能し得る他の媒体を含み得るが、これらに限定されるものではない。各タイプの媒体は、一実施形態において選択されて実現される場合、開示されているおよび／またはクレームされている機能のうちの１つ以上を実行するように構成されたアルゴリズムの格納された命令を含んでもよい。
【００７６】
本明細書における「ロジック」は、本明細書に開示されている機能または動作のうちのいずれかを実行するように、および／または、別のロジックからの機能または動作、方法および／またはシステムを本明細書に開示されているように実行させるように、コンピュータもしくは電気ハードウェア、実行可能なアプリケーションもしくはプログラムモジュールの格納された命令を有する非一時的な媒体、および／または、これらの組み合わせで実現される構成要素を表す。等価のロジックは、ファームウェア、アルゴリズムでプログラムされたマイクロプロセッサ、ディスクリートロジック（たとえば、ＡＳＩＣ）、少なくとも１つの回路、アナログ回路、デジタル回路、プログラムされたロジックデバイス、アルゴリズムの命令を含むメモリデバイスなどを含んでもよく、これらはいずれも、開示されている機能のうちの１つ以上を実行するように構成されてもよい。一実施形態では、ロジックは、開示されている機能のうちの１つ以上を実行するように構成された１つ以上のゲート、ゲートの組み合わせ、または他の回路構成要素を含んでもよい。複数のロジックが記載されている場合、これらの複数のロジックを１つのロジックに併合させることが可能であってもよい。同様に、単一のロジックが記載されている場合、この単一のロジックを複数のロジック間に分散させることが可能であってもよい。一実施形態では、これらのロジックのうちの１つ以上は、開示されているおよび／またはクレームされている機能を実行することに関連付けられた対応する構造である。どのタイプのロジックを組み込むかの選択は、所望のシステム条件または仕様に基づいてもよい。たとえば、高速化が検討事項である場合には、機能を実行するためにハードウェアが選択されるであろう。低コスト化が検討事項である場合には、機能を実行するために格納された命令／実行可能なアプリケーションが選択されるであろう。
【００７７】
「動作可能な接続」、または、エンティティが「動作可能に接続」される接続は、信号、物理的通信および／または論理的通信を送受信することができる接続である。動作可能な接続は、物理インターフェイス、電気インターフェイスおよび／またはデータインターフェイスを含んでもよい。動作可能な接続は、動作可能な制御を可能にするのに十分なインターフェイスおよび／または接続のさまざまな組み合わせを含んでもよい。たとえば、２つのエンティティが、直接的にまたは１つ以上の中間エンティティ（たとえば、プロセッサ、オペレーティングシステム、ロジック、非一時的なコンピュータ読取可能媒体）を介して信号を互いに通信するように動作可能に接続されてもよい。論理的および／または物理的通信チャネルを使用して、動作可能な接続を作り出すことができる。
【００７８】
本明細書における「ユーザ」は、１つ（１人）以上の人、コンピュータもしくは他のデバイス、またはこれらの組み合わせを含むが、これらに限定されるものではない。
【００７９】
開示されている実施形態を相当詳細に示し、説明してきたが、添付の特許請求の範囲の範囲をこのような詳細に制限または何らかの形で限定することは意図していない。当然のことながら、主題のさまざまな局面を説明する目的で構成要素または方法のあらゆる考えられる組み合わせを記載することは不可能である。したがって、本開示は、示され、説明されている具体的な詳細または例示的な例に限定されるものではない。そのため、本開示は、添付の特許請求の範囲の範囲内に含まれる変更例、変形例およびバリエーションを包含するよう意図される。
【００８０】
「含む（includes）」または「含んでいる（including）」という用語が詳細な説明または請求項で利用される限りにおいて、この用語が請求項の中で移行語として利用される場合に解釈されるように、「備えている（comprising）」という用語と同様に包括的であることが意図される。
【００８１】
「または」という用語が詳細な説明または請求項で使用される（たとえば、ＡまたはＢ）限りにおいて、「ＡまたはＢまたはそれら両方」を意味することが意図される。出願人が「ＡまたはＢのみであり、両方ではない」ことを示そうと思う場合には、「ＡまたはＢのみであり、両方ではない」というフレーズが使用されるであろう。したがって、本明細書における「または」という用語の使用は包括的な使用であり、排他的な使用ではない。
【図１】
2020522063.tif 000003
【図２】
2020522063.tif 000004
【図３】
2020522063.tif 000005
【図４】
2020522063.tif 000006
【図５】
2020522063.tif 000007
【図６】
2020522063.tif 000008
【図７】
2020522063.tif 000009
【図８】
2020522063.tif 000010
【国際調査報告】
2020522063.tif 000011
2020522063.tif 000012
2020522063.tif 000013