(57)【要約】  ジョブ位置間の走行コストに基づく１対多数の最短経路探索を用いることによってジョブのスケジューリングを行なうための方法、システム、およびコンピュータ可読媒体。いくつかの例では、システムは、ジョブごとに地理的な起点からそれぞれの地理的なジョブ位置までの走行に基づいてジョブのスケジューリングを行なうように構成された１つ以上のコンピュータを備える。システムはさらに、１つ以上のコンピュータ上で実現される１対多数の経路サーチャーを備える。１対多数の経路サーチャーは、走行コストを用いて起点ノードと宛先ノードとの間の中間ノードを横断することによって、起点ノードから宛先ノードまでグラフのエッジに沿って経路を探索する。この横断は、中間ノードに対応する中間の地理的な位置と最初に地理的なジョブ位置を取り囲む境界との間の地理的な距離に基づいてヒューリスティックな走行コストを求めることを含む。
2019504988.tif 000002
【特許請求の範囲】
【請求項１】
ジョブごとに、地理的な起点からそれぞれの地理的なジョブ位置までの走行に基づいて、複数のジョブのスケジューリングを行なうように構成された１つ以上のコンピュータと、
前記１つ以上のコンピュータ上で実現され、複数の動作を行なうように構成された１対多数の経路サーチャーとを備え、
前記複数の動作は、
地理的な位置に対応する複数のノードと前記地理的な位置間の走行コストによって重み付けされたノード間の複数のエッジとを含むグラフにおいて、前記地理的な起点に対応する起点ノードと前記地理的なジョブ位置に対応する複数の宛先ノードとを特定することと、
前記走行コストを用いて前記起点ノードと前記複数の宛先ノードとの間の複数の中間ノードを横断することによって、前記起点ノードから前記複数の宛先ノードまで前記グラフのエッジに沿って経路を探索することとを含み、前記横断することは、前記複数の中間ノードの少なくとも１つのサブセットの各中間ノードにおいて、前記中間ノードに対応する中間の地理的な位置と前記地理的なジョブ位置を最初に取り囲む境界との間の地理的な距離に基づいてヒューリスティックな走行コストを求めることを含み、前記複数の動作はさらに、
前記複数の宛先ノードのうちの１つの宛先ノードの発見に応じて、前記複数の宛先ノードのうちの前記１つの宛先ノードに対応する、発見された地理的な位置を除く前記地理的なジョブ位置を前記境界が取り囲むように前記境界を調節し、前記複数の宛先ノードの全てを発見するまで前記探索および前記境界の調節を継続することを含む、システム。
【請求項２】
前記複数の動作は、前記中間の地理的な位置と前記境界との間の最短の直線距離として、前記中間の地理的な位置と前記境界との間の前記地理的な距離を求めることを含む、請求項１に記載のシステム。
【請求項３】
最初に前記地理的なジョブ位置を取り囲む前記境界は矩形を含み、前記複数の動作は、探索を開始する前に、４つの基本方向の各々について前記基本方向における前記地理的な起点から最も遠い地理的なジョブ位置を有するそれぞれの境界エッジ宛先ノードを含む宛先ノードの組を求めることによって前記境界を求めることを含む、請求項１に記載のシステム。
【請求項４】
前記境界を調節することは、前記境界エッジ宛先ノードのうちの１つの境界エッジ宛先ノードの発見に応じてのみ、前記境界を調節することを含む、請求項３に記載のシステム。
【請求項５】
前記複数の中間ノードを横断することは、各中間ノードにおいて、前記起点ノードから前記中間ノードまで前記グラフを横断する実際の走行コストを格納することを含む、請求項１に記載のシステム。
【請求項６】
前記複数の中間ノードを横断することは、第１の中間ノードにおいて、前記第１の中間ノードの１つ以上の隣接ノードについて、前記第１の中間ノードまでの実際の走行コストと前記第１の中間ノードについての前記ヒューリスティックな走行コストとに基づいて合計コスト推定値を求めることを含む、請求項５に記載のシステム。
【請求項７】
前記複数の中間ノードを横断することは、最も低い合計コスト推定値を有する前記１つ以上の隣接ノードから第２の中間ノードを選択し、前記第２の中間ノードまで前記グラフを横断することを含む、請求項６に記載のシステム。
【請求項８】
前記経路を探索することは、前記地理的な起点が前記境界の外側にある場合にのみ、前記複数の中間ノードを横断している間に前記ヒューリスティックな走行コストを求めることを含む、請求項１に記載のシステム。
【請求項９】
前記グラフは道路網を表し、前記エッジは地理的な位置間の道路を表し、前記ノードは道路交差点を表し、前記走行コストは道路交差点間の道路に沿った推定走行時間を表す、請求項１に記載のシステム。
【請求項１０】
前記１つ以上のコンピュータは、前記１対多数の経路サーチャーによって求められるような最も低い走行コストを有する第１のジョブのスケジューリングを最初に行ない、次に前記地理的な起点として前記第１のジョブの第１の地理的な位置を有する前記１対多数の経路サーチャーを用いて探索を行ない、次に前記ジョブの全てのスケジューリングが行なわれるまで前記スケジューリングを繰り返し、前記スケジューリングに基づいてユーザにスケジュールを提供することによって、前記複数のジョブのスケジューリングを行なうように構成されている、請求項１に記載のシステム。
【請求項１１】
ジョブごとに地理的な起点からそれぞれの地理的なジョブ位置までの走行に基づいて複数のジョブのスケジューリングを行なうための方法であって、
地理的な位置に対応する複数のノードと前記地理的な位置間の走行コストによって重み付けされたノード間の複数のエッジとを含むグラフにおいて、１つ以上のコンピュータのシステムが、前記地理的な起点に対応する起点ノードと前記地理的なジョブ位置に対応する複数の宛先ノードとを特定することと、
前記１つ以上のコンピュータのシステムが、走行コストを用いて前記起点ノードと前記複数の宛先ノードとの間の複数の中間ノードを横断することによって、前記起点ノードから前記複数の宛先ノードまで前記グラフのエッジに沿って経路を探索することとを備え、前記横断することは、前記複数の中間ノードの少なくとも１つのサブセットの各中間ノードにおいて、前記中間ノードに対応する中間の地理的な位置と前記地理的なジョブ位置を最初に取り囲む境界との間の地理的な距離に基づいてヒューリスティックな走行コストを求めることを含み、前記方法はさらに、
前記複数の宛先ノードのうちの１つの宛先ノードの発見に応じて、前記１つ以上のコンピュータのシステムが、前記複数の宛先ノードのうちの前記１つの宛先ノードに対応する、発見された地理的な位置を除く前記地理的なジョブ位置を前記境界が取り囲むように前記境界を調節し、前記複数の宛先ノードの全てを発見するまで前記探索および前記境界の調節を継続することを備える、方法。
【請求項１２】
前記中間の地理的な位置と前記境界との間の最短の直線距離として、前記中間の地理的な位置と前記境界との間の前記地理的な距離を求めることを備える、請求項１１に記載の方法。
【請求項１３】
最初に前記地理的なジョブ位置を取り囲む前記境界は矩形を含み、前記方法は、探索を開始する前に、４つの基本方向の各々について前記基本方向における前記地理的な起点から最も遠い地理的なジョブ位置を有するそれぞれの境界エッジ宛先ノードを含む宛先ノードの組を求めることによって、前記境界を求めることを備える、請求項１１に記載の方法。
【請求項１４】
前記境界を調節することは、境界エッジ宛先ノードのうちの１つの境界エッジ宛先ノードの発見に応じてのみ前記境界を調節することを含む、請求項１３に記載の方法。
【請求項１５】
前記複数の中間ノードを横断することは、各中間ノードにおいて、前記起点ノードから前記中間ノードまで前記グラフを横断する実際の走行コストを格納することを含む、請求項１１に記載の方法。
【請求項１６】
前記複数の中間ノードを横断することは、第１の中間ノードにおいて、前記第１の中間ノードの１つ以上の隣接ノードについて、前記第１の中間ノードまでの前記実際の走行コストと前記第１の中間ノードについての前記ヒューリスティックな走行コストとに基づいて合計コスト推定値を求めることを含む、請求項１５に記載の方法。
【請求項１７】
前記複数の中間ノードを横断することは、最も低い合計コスト推定値を有する前記１つ以上の隣接ノードから第２の中間ノードを選択し、前記第２の中間ノードまで前記グラフを横断することを含む、請求項１６に記載の方法。
【請求項１８】
前記経路を探索することは、前記地理的な起点が前記境界の外側にある場合にのみ、前記複数の中間ノードを横断する間に前記ヒューリスティックな走行コストを求めることを含む、請求項１１に記載の方法。
【請求項１９】
前記グラフは道路網を表し、前記エッジは地理的な位置間の道路を表し、前記ノードは道路交差点を表し、前記走行コストは道路交差点間の道路に沿った推定走行時間を表す、請求項１１に記載の方法。
【請求項２０】
最も低い走行コストを有する第１のジョブのスケジューリングを最初に行ない、次に前記地理的な起点として前記第１のジョブの第１の地理的な位置を用いて前記探索を繰り返し、次に前記ジョブの全てのスケジューリングが行なわれるまで前記スケジューリングを繰り返し前記スケジューリングに基づいてユーザにスケジュールを提供することを備える、請求項１１に記載の方法。
【請求項２１】
１つ以上のコンピュータによって実行されると、複数の動作を行なうことによって、ジョブごとに前記１つ以上のコンピュータに地理的な起点からそれぞれの地理的なジョブ位置までの走行に基づいて複数のジョブのスケジューリングを行なわせる実行可能な命令を格納した非一時的なコンピュータ可読媒体であって、前記複数の動作は、
地理的な位置に対応する複数のノードと前記地理的な位置間の走行コストによって重み付けされたノード間の複数のエッジとを含むグラフにおいて、前記地理的な起点に対応する起点ノードと前記地理的なジョブ位置に対応する複数の宛先ノードとを特定することと、
前記走行コストを用いて前記起点ノードと前記複数の宛先ノードとの間の複数の中間ノードを横断することによって、前記起点ノードから前記複数の宛先ノードまでグラフのエッジに沿って経路を探索することとを含み、前記横断することは、前記複数の中間ノードの少なくとも１つのサブセットの各中間ノードにおいて、前記中間ノードに対応する中間の地理的な位置と前記地理的なジョブ位置を最初に取り囲む境界との間の地理的な距離に基づいてヒューリスティックな走行コストを求めることを含み、前記複数の動作はさらに、
前記複数の宛先ノードのうちの１つの宛先ノードの発見に応じて、前記複数の宛先ノードのうちの前記１つの宛先ノードに対応する、発見された地理的な位置を除く前記地理的なジョブ位置を前記境界が取り囲むように前記境界を調節し、前記複数の宛先ノードの全てを発見するまで前記探索および前記境界の調節を継続することを含む、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本願は、２０１６年１月８日に出願された米国特許出願第１４／９９１，５５７号の利益を主張し、その開示を本明細書に引用により援用する。
【０００２】
技術分野
本明細書で説明される主題は、一般にジョブのスケジューリングに関する。より詳細に、本明細書で説明される主題は、ジョブ位置間の走行コストに基づく１対多数の最短経路探索を用いることによってジョブをスケジューリングするための方法、システム、およびコンピュータ可読媒体に関する。
【背景技術】
【０００３】
背景
ロードマッピングプログラムは、街中の道路レベルまでの詳細な道路網を備えていることもあるデジタルマップを提供する。典型的には、ユーザが位置を入力可能であり、ロードマッピングプログラムは選択された位置の画面上の地図を表示する。ロードマッピングプログラムの中には、２つの位置間の「最適ルート」を計算する特徴を提供するものもある。これらのプログラムでは、ユーザは２つの位置を入力可能であり、ロードマッピングプログラムは出発位置から目的位置までの走行方向を計算する。これらの方向は、距離、走行時間、ならびに好ましい運転速度または高速道路および地方道路の間での選択などのユーザの特定の選択によって求めることができる。位置間の最適ルートを計算するには、多大な計算時間およびリソースが必要な場合がある。
【０００４】
ロードマッピングプログラムの中には、ダイクストラ法（Dijkstra's method）の変種を使用して位置間の最適ルートを計算するものもある。各道路区分には、コストまたは道路区間の長さと関係することもあれば関係しないこともある重みを割り当てることが可能である。道路ごとにコストを計算する方法を変えることによって、最速、最短、または好ましいルートについて最適なルートを計算可能である。ロードマッピングプログラムの中には、ヒューリスティックな探索であるＡ*探索を含む、ダイクストラ法のヒューリスティックな変種を使用するものもある。Ａ*探索を使用すると、正しい一般的な方向に最短経路の計算を導こうとする。そのようなヒューリスティックな変種は、中間位置と宛先との間の経路の重みの推定を含むことが一般的である。たとえば、ヒューリスティックな変種の中には、位置間の直線的なユークリッドの距離などの下限推定法を使用するものもある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ジョブスケジューリングプログラムへの入力のうちの１つは、プログラムによってスケジュールされるべき多数のジョブ間の走行時間もしくは距離、またはそれら双方に基づく走行コストであり得る。走行コストは、複数のジョブのうちの１つの位置を起点として、残りのジョブの位置を宛先として用いたダイクストラアルゴリズムまたはＡ*アルゴリズムを用いて、全てのジョブについてこの処理を繰り返すことによって求めることができる。多くのジョブのスケジューリングを行なわなければならない状況では、それらのジョブについて走行コストを求めるには多量の計算リソースが必要なことがあり、全計算時間が長くなりすぎることによって効果的なジョブスケジューリングが妨げられることがある。
【０００６】
したがって、これらの問題を鑑みると、ジョブ位置間の走行コストに基づく１対多数の最短経路探索を用いることによってジョブをスケジューリングするための方法、システム、およびコンピュータ可読媒体が必要とされる。
【課題を解決するための手段】
【０００７】
概要
本明細書で説明される主題は、ジョブ位置間の走行コストに基づく１対多数の最短経路探索を用いることによってジョブをスケジューリングするための方法、システム、およびコンピュータ可読媒体に関する。コンピュータシステムは、グラフ探索、たとえばＡ*探索を使用し、起点ノードから開始し、まだ到達していない宛先ノードを取り囲む境界までの距離をヒューリスティックな走行コストとして用いることによって、さまざまなジョブと関連する走行コストを算出するためにかかる時間を削減することができる。コンピュータシステムは、必要とされる計算リソース数の削減が可能であり、これによって、たとえば、スケジューラ初期設定時間および予約待ち時間を削減することができる。
【０００８】
いくつかの例において、システムは、ジョブごとに地理的な起点からそれぞれの地理的なジョブ位置までの走行に基づいて、複数のジョブのスケジューリングを行なうように構成された１つ以上のコンピュータを備える。システムはさらに、１つ以上のコンピュータ上で実現される１対多数の経路サーチャーを備える。１対多数の経路サーチャーは、地理的な位置に対応する複数のノードと地理的な位置間の走行コストによって重み付けされたノード間の複数のエッジとのグラフにおいて、地理的な起点に対応する起点ノードと地理的なジョブ位置に対応する複数の宛先ノードとを特定するように構成される。１対多数の経路サーチャーは、走行コストを用いて起点ノードと宛先ノードとの間の複数の中間ノードを横断することによって、起点ノードから宛先ノードまでグラフのエッジに沿って経路を探索するように構成される。横断することは、複数の中間ノードの少なくとも１つのサブセットの各中間ノードにおいて、中間ノードに対応する中間の地理的な位置と地理的なジョブ位置を最初に取り囲む境界との間の地理的な距離に基づいてヒューリスティックな走行コストを求めることを含む。１対多数の経路サーチャーは、複数の宛先ノードのうちの１つの宛先ノードの発見に応じて、複数の宛先ノードのうちの当該１つの宛先ノードに対応する、発見された地理的な位置を除く地理的なジョブ位置を境界が取り囲むように境界を調節し、宛先ノードの全てを発見するまで探索および境界の調節を継続するように構成されている。
【０００９】
いくつかの例において、１対多数の経路サーチャーは、中間の地理的な位置と境界との間の最短の直線距離として、中間の地理的な位置と境界との間の地理的な距離を求める。いくつかの例において、最初に地理的なジョブ位置を取り囲む境界は矩形を含み、１対多数の経路サーチャーは、探索を開始する前に、４つの基本方向の各々について基本方向における地理的な起点から最も遠い地理的なジョブ位置を有するそれぞれの境界エッジ宛先ノードを含む宛先ノードの組を求めることによって、境界を求める。境界を調節することは、境界エッジ宛先ノードのうちの１つの境界エッジ宛先ノードの発見に応じてのみ境界を調節することを含み得る。
【００１０】
いくつかの例では、中間ノードを横断することは、各中間ノードにおいて、起点ノードから中間ノードまでグラフを横断する実際の走行コストを格納することを含む。いくつかの例では、中間ノードを横断することは、第１の中間ノードにおいて、第１の中間ノードの１つ以上の隣接ノードについて、第１の中間ノードまでの実際の走行コストと第１の中間ノードについてのヒューリスティックな走行コストとに基づいて合計コスト推定値を求めることを含む。いくつかの例では、中間ノードを横断することは、最も低い合計コスト推定値を有する１つ以上の隣接ノードから第２の中間ノードを選択し、第２の中間ノードまでグラフを横断することを含む。いくつかの例では、経路を探索することは、地理的な起点が境界の外側にある場合にのみ、中間ノードを横断している間にヒューリスティックな走行コストを求めることを含む。
【００１１】
いくつかの例では、グラフは道路網を表し、エッジは地理的な位置間の道路を表し、ノードは道路交差点を表し、走行コストは道路交差点間の道路に沿った推定走行時間を表す。いくつかの例では、１つ以上のコンピュータは、１対多数の経路サーチャーによって求められるような最も低い走行コストを有する第１のジョブのスケジューリングを最初に行ない、次に地理的な起点として第１のジョブの第１の地理的な位置を有する１対多数の経路サーチャーを用いて探索を行ない、次にジョブの全てのスケジューリングが行なわれるまでスケジューリングを繰り返し、スケジューリングに基づいてユーザにスケジュールを提供することによって、複数のジョブのスケジューリングを行なうように構成される。
【００１２】
本明細書で説明される主題は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて実現されてもよい。したがって、本明細書で用いられる「機能」、「ノード」、または「モジュール」という用語は、説明される特徴（単数または複数）を実現するためのハードウェア、ソフトウェア、および/またはファームウェアコンポーネントを指す。いくつかの例では、本明細書で説明される主題は、コンピュータの１つ以上のプロセッサによって実行されるとコンピュータに動作を行なわせる、コンピュータ実行可能な命令を格納した非一時的なコンピュータ可読媒体を用いて実現可能である。
【００１３】
本明細書で説明される主題の実現に好適なコンピュータ可読媒体は、非一時的なコンピュータ可読媒体、たとえば、ディスク記憶装置、チップメモリデバイス、プログラマブル論理デバイス、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、光学読出し/書込み用メモリ、キャッシュメモリ、磁気読出し/書込み用メモリ、フラッシュメモリ、および特定用途向け集積回路を含む。さらに、本明細書で説明される主題を実現するコンピュータ可読媒体は、ただ１つのデバイスもしくはコンピュータプラットフォームに設けられてもよく、または、複数のデバイスもしくは複数のコンピュータプラットフォームにわたって分散されてもよい。
【図面の簡単な説明】
【００１４】
【図１】スケジューラコンピュータシステムの例を示すブロック図である。
【図２】ジョブスケジューラの例を示すブロック図である。
【図３】１対多数の経路サーチャーの例を示すブロック図である。
【図４Ａ】地理的ジョブ位置の３つの例までの経路探索シナリオの例を示す図である。
【図４Ｂ】地理的ジョブ位置の３つの例までの経路探索シナリオの例を示す図である。
【図４Ｃ】地理的ジョブ位置の３つの例までの経路探索シナリオの例を示す図である。
【図４Ｄ】地理的ジョブ位置の３つの例までの経路探索シナリオの例を示す図である。
【図５】グラフを横断中に中間ノードにおけるヒューリスティックな走行コストを求めるシナリオの例を示す図である。
【図６】１対多数の経路サーチャーを用いた、地理的な起点から地理的ジョブ位置までの走行に基づいてジョブのスケジューリングを行なうための方法６００の例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
詳細な説明
図１は、スケジューラコンピュータシステム１０２の例を示すブロック図である。スケジューラコンピュータシステム１０２は、データ通信網１０６、たとえばインターネットを利用して少なくとも１つのユーザデバイス１０４と通信する。スケジューラコンピュータシステム１０２は、１つ以上のプロセッサ１０８と、プロセッサ１０８によって実行されるとプロセッサ１０８に地理的な起点から地理的なジョブ位置までの走行に基づいてジョブのスケジューリングを行なわせる命令を格納するメモリ１１０とを含む。メモリ１１０は、ユーザインターフェース１１２と、ジョブスケジューラ１１４と、１対多数の経路サーチャー１１６とを含むプログラムモジュールを格納可能である。
【００１６】
動作中、スケジューラコンピュータシステム１０２は、ジョブのスケジューリングを行ない、さまざまな他のソフトウェアサービス、たとえばスケジューリングおよびプランニングに関するビジネスサービスを提供可能である。いくつかの例では、スケジューラコンピュータシステム１０２は、ビジネス顧客が独特のビジネス要件を満たすコンポーネントを選択できるような、モジュール方式の構成可能な設計を特徴とする。その設定可能性により、スケジューラコンピュータシステム１０２は、宅配、現場サービス、および設備管理などの広範囲なサプライチェーン部門で採用可能である。
【００１７】
たとえば、スケジューラコンピュータシステム１０２は、キャパシティ・プランニングから、自動車、技術者、および顧客スケジューリング、そして発送管理およびモバイル操作にわたるサービス提供ビジネスにおけるタスクについて使用可能である。スケジューラコンピュータシステム１０２は、業務効率および顧客満足度を高めるために、サービス提供ビジネスによって、たとえば以下の特徴を用いて使用可能である。
【００１８】
・より好ましいプランニングツールならびに多数のフィールドおよびリソース通信タスクの自動化を通じて、業務および発送管理効率を高める特徴、
・作業負荷のより好ましい分散によってリソース効率を高めて、運転される走行距離を最小限にし、リアルタイムのアップデートに基づいて一日のうちでジョブを最適に再分配する特徴、および
・「ワンタッチ」スケジューリングおよびプロアクティブ例外管理を行なって、遅延および顧客通知を最小限にする特徴。
【００１９】
スケジューラコンピュータシステム１０２は、ビジネスの目的に対応するように、たとえば、緊急ジョブの優先順位付け、顧客へのキャンセルの自動的な通知、およびサービス提供予約の効率的なリスケジューリングに対応するように用いることができる。いくつかの例では、スケジューラコンピュータシステム１０２は、顧客が電話中に予約サービスまたは配送予約について、どのモバイルリソースが現在利用可能であるか、およびそれらがどこに位置しているかについてリアルタイムの表示を提供する。いくつかの例では、スケジューラコンピュータシステム１０２は、走行時間を最小限にして燃料コストを節約し自動車の消耗を低減するように構成されている。スケジューラコンピュータシステム１０２は、特定のスキルおよび資格に従って現場の技術者をサービス依頼の電話に割り当てるように構成可能である。スケジューラコンピュータシステム１０２は、リアルタイムに配送状況およびサービス依頼の電話について報告するように構成可能であり、顧客に遅延やキャンセルを通知し続ける。
【００２０】
スケジューラコンピュータシステム１０２は、サーバ、たとえば、クラウドコンピューティングサービスをユーザデバイス１０４に提供するサーバとして実現可能である。ユーザデバイス１０４は、ディスプレイおよびユーザ入力デバイスを含む任意の適切なコンピュータシステムでもよい。たとえば、ユーザデバイス１０４は、パーソナルコンピュータ、スマートフォン、またはタブレットでもよい。
【００２１】
ユーザは、たとえば、ユーザデバイス１０４上で実行してユーザインターフェース１１２と対話可能なウェブブラウザを使用してもよい。ユーザは、スケジューラコンピュータシステム１０２によって提供されるウェブページについてユニフォームリソースロケータ（ＵＲＬ）を入力可能であり、スケジューラコンピュータシステム１０２は、ユーザインターフェース１１２をユーザデバイス１０４に提供してユーザと対話可能である。ユーザインターフェース１１２は、任意の適切なユーザインターフェース技術、たとえば、ハイパテキストマークアップランゲージ（ＨＴＭＬ）または非同期Ｊａｖａ（登録商標）およびＸＭＬ（ＡＪＡＸ）を用いて実現可能である。
【００２２】
ユーザは、ユーザインターフェース１１２を用いてジョブスケジューラ１１４に情報を提供する。提供される情報は、多数のジョブについて地理的なジョブ位置を特定するためにジョブスケジューラ１１４が使用可能な情報を含む。たとえば、ユーザは、アドレスの一覧を有するファイルの提供が可能である、または、ジョブスケジューラ１１４をアドレスの一覧もしくはジョブについての地理的なジョブ位置、たとえばビジネスネームを求めるために使用可能な他の情報を提供可能な他のサーバに導くことが可能である。提供される情報は、他の任意の情報、たとえば、ジョブをスケジューリングするために利用可能な時間または他のスケジューリング制限を特徴付ける情報を含み得る。ジョブスケジューラ１１４について、図２を参照して以下でさらに説明する。
【００２３】
ジョブスケジューラ１１４は、１対多数の経路サーチャー１１６を使用して、地理的な起点について地理的なジョブ位置の各々まで走行する走行コストを求める。地理的な起点は、複数のジョブのうちの１つについての地理的なジョブ位置であり得る。走行コストはたとえば、推定走行時間、走行距離、推定コスト、推定燃料消費量、またはこれらの要素の組合せでもよい。たとえば、走行コストは道路網にわたる車もしくはトラックの走行、または線路網にわたる鉄道の走行に基づいていてもよい。
【００２４】
１対多数の経路サーチャー１１６は、地理的な位置に対応するノードと地理的な位置間の走行コストによって重み付けされたノード間のエッジとのグラフにおいて、地理的な起点に対応する起点ノードと地理的なジョブ位置に対応する宛先ノードとを特定するように構成されている。１対多数の経路サーチャー１１６は、走行コストを用いて起点ノードと宛先ノードとの間の中間ノードを横断することによって、起点ノードから宛先ノードまでグラフのエッジに沿って経路を探索するように構成されている。
【００２５】
中間ノードを横断することは、中間ノードの少なくとも１つのサブセットの各中間ノードにおいて、中間ノードに対応する中間の地理的な位置と地理的なジョブ位置を最初に取り囲む境界との間の地理的な距離に基づいてヒューリスティックな走行コストを求めることを含む。１対多数の経路サーチャー１１６は、複数の宛先ノードのうちの１つの発見に応じて、複数の宛先ノードのうちの１つの宛先ノードに対応する、発見された地理的な位置を除く地理的なジョブ位置を境界が取り囲むように境界を調節するように構成されている。１対多数の経路サーチャー１１６は、宛先ノードの全てを発見するまで、探索および境界の調節を継続する。１対多数の経路サーチャー１１６について、図３を参照して以下でさらに説明する。
【００２６】
図２は、ジョブスケジューラ１１４の例を示すブロック図である。ジョブスケジューラ１１４は、情報コレクタ２０２と、ジョブソータ２０４と、スケジューラエクスポータ２０６とを含む。
【００２７】
情報コレクタ２０２は、ジョブスケジューリングについて、たとえばユーザデバイス１０４から情報を受信するように構成されている。情報は、ジョブスケジューラ１１４が多数のジョブについて地理的なジョブ位置を特定するために使用可能な情報を含む。たとえば、情報コレクタ２０２はアドレスの一覧を有するファイルを受信可能である。情報コレクタ２０２は、アドレスの一覧またはジョブについて地理的なジョブ位置を求めるために使用可能な他の情報、たとえばビジネスネームを提供可能なサーバと通信可能である。
【００２８】
たとえば、ユーザが多数の配送のスケジューリングを行なっていると仮定する。情報コレクタ２０２は、配送ごとに、アドレスを検索するために使用可能なビジネスのアドレスか名前のどちらかを受信可能である。いくつかの例では、情報コレクタ２０２は、ビジネスネームをアドレスに変換する、または、アドアレスを正確な位置データ、たとえば、緯度および経度データもしくは全地球測位システム（ＧＰＳ）座標に変換する。
【００２９】
提供される情報は、他の任意の情報、たとえば、ジョブのスケジューリングについて利用可能な時間または他のスケジューリング制限を特徴づける情報を含み得る。たとえば、情報コレクタ２０２は、カレンダファイルまたは通常のビジネス時間を指定するデータを受信可能である。他の例では、情報キャラクタライザは、たとえば地方道路での走行を選択すること、または推定走行時間ではなく距離に基づいたジョブの分類を好むことを示す選択情報を受信可能である。
【００３０】
たとえば、ユーザが多数の配送のスケジューリングを行なっている例を考える。配送ドライバは、月曜日から木曜日の９〜３時まで対応可能である。ユーザは、これらの日にちを有するカレンダファイルをアップロード可能である。または、ユーザは、ユーザインターフェース１１２において実現されるカレンダウィジェットを使用して、配送ジョブについて利用可能な配送時間を指定することが可能である。
【００３１】
ジョブソータ２０４は、スケジューリングについてジョブを分類するように構成されている。ジョブソータ２０４は、１対多数の経路サーチャー１１６を使用して各ジョブと関連する走行コストを求める。それによって、ジョブソータ２０４は、走行コストに基づいて、たとえば最も低い走行コストから最も高い走行コストの順に、およびユーザのスケジュールでジョブについて利用可能な時間帯の順で、多数のジョブを分類可能である。
【００３２】
たとえば、ユーザが多数の配送のスケジューリングを行なっている例を考える。ジョブソータ２０４は、１対多数の経路サーチャー１１６を使用して、第１の配送位置が配送起点、たとえば倉庫からの最も低い走行コストを有していると判断する。ジョブソータ２０４は、ユーザについて利用可能な最も早い時間帯に第１の配送位置のスケジューリングを行なう。
【００３３】
ジョブソータ２０４はその後、スケーリングされるべき配送のリストから第１の配送位置を除去し、起点として第１の配送位置を有する１対多数の経路サーチャー１１６に残りの配送位置を提供する。ジョブソータ２０４は、１対多数の経路サーチャー１１６を使用して、第２の配送位置が最も低い走行コストを有していると判断し、第２の配送位置をユーザが利用可能な次の時間帯にスケジューリングする。ジョブソータ２０４は、全てのジョブがスケジューリングされるまで、または他の終了条件に到達するまで、このプロセスを繰り返す。
【００３４】
スケジュールエクスポータ２０６は、ジョブソータ２０４の結果を出力する。たとえば、スケジュールエクスポータ２０６は、スケジューリングされたジョブのカレンダファイルをフォーマットし、カレンダファイルをユーザデバイス１０４に送信可能である。他の例では、スケジュールエクスポータ２０６は、ユーザインターフェース１１２によって実現されるカレンダウィジェットにおいて表示するためにスケジューリングされたジョブをフォーマットする。
【００３５】
スケジュールエクスポータ２０６は、特定のビジネスニーズを満たすようにカスタマイズ可能である。たとえば、ユーザが多数の配送をスケジューリングしている例を考える。スケジュールエクスポータ２０６は、倉庫のコンピュータシステムおよび配送トラックのモバイルコンピュータにスケジュールを送信可能である。倉庫の従業者は、配送について商品の準備を開始することが可能になり、配送トラックは、スケジュールを用いてトラックのドライバについて方向をプロット可能である。
【００３６】
図３は、１対多数の経路サーチャー１１６の例を示すブロック図である。１対多数の経路サーチャー１１６は、グラフサーチャー３０２と、走行コスト決定部３０４と、境界マネジャ３０６とを含む。１対多数の経路サーチャー１１６は、地図データ３０８と、訪れたノードのデータ３１０と、走行コストデータ３１２とを含む、経路の探索に使用されるさざまなデータを格納する。
【００３７】
グラフサーチャー３０２は、グラフを使用して多数のジョブについて地理的な起点から地理的なジョブ位置までの経路を探索するように構成されている。グラフサーチャー３０２は、ノードおよびノード間のエッジを含むグラフを作成する、または受信する。ノードは、地理的な位置に対応する。エッジは、ノードに対応する地理的な位置間の走行コストによって重み付けられている。
【００３８】
たとえば、１対多数の経路サーチャー１１６が道路網を運転するために配送トラックについての経路を探索していると仮定する。グラフは、道路網を表し得る。エッジは、地理的な位置間の道路を表す。ノードは、道路交差点を表す。走行コストは、道路交差点間の道路に沿った推定走行時間、または距離など他の走行コストを表し得る。グラフサーチャー３０２は、地図データ３０８を使用してグラフを作成可能である。
【００３９】
グラフサーチャー３０２は、グラフにおいて、多数のジョブの地理的な起点に対応する１つの起点ノードと、地理的なジョブ位置に対応する複数の宛先ノードとを特定する。グラフサーチャー３０２は、走行コストを用いて起点ノードと宛先ノードとの間の中間ノードを横断することによって、起点ノードから宛先ノードまでグラフのエッジに沿って経路を探索するように構成されている。中間ノードを横断することは、現在のノードから隣接ノードを訪れることと、隣接ノードについて走行コストを求めることと、訪れたノードのデータベース３１０および走行コストデータベース３１２内の走行コストおよび訪れたノードをトラッキングすることとを含む。
【００４０】
たとえば、グラフサーチャー３０２は、ダイクストラ法のアルゴリズムの要素、Ａ*アルゴリズムの要素、または他のグラフ探索アルゴリズムの要素を使用して中間ノードを横断可能である。走行コスト決定部３０４は、各ノードにおいて走行コストを決定する。走行コストは、グラフの横断によって求められるような実際のコストと、中間ノードに対応する中間の地理的な位置と境界との間の地理的な距離に基づくヒューリスティックな走行コストとを含み得る。走行コスト決定部３０４は、中間の地理的な位置と境界との間の最短直線距離を求めることができる。
【００４１】
グラフサーチャー３０２がグラフを横断すると、境界マネジャ３０６は境界の初期化および調節を行なう。境界は、最初（たとえば、グラフサーチャー３０２が中間ノードの横断を開始する前）は全ての地理的なジョブ位置を取り囲んでいる。地理的なジョブ位置のいくつかは、境界上に位置している場合もある。たとえば、本明細書で使用されるように、境界はそのようなエッジ位置を「取り囲む」。その後、グラフサーチャー３０２が宛先ノードを訪れると、境界マネジャ３０６は、境界が残りの訪れていない宛先ノードのみを取り囲むように、宛先ノードを訪れることに応じて境界を調節する。
【００４２】
典型的には、グラフサーチャー３０２は、地理的な起点が境界の外側にある場合にのみ、境界を用いてヒューリスティックな走行コストを求める。地理的な起点が境界の内側にある場合、ヒューリスティックな走行コスの使用によって利点がもたらされ得る場合がある。なぜなら、地理的な起点から全ての方向において訪れていない宛先ノードが存在するからである。地理的な起点が境界の外側にある場合にのみ境界を用いてヒューリスティックな走行コストを求めることによって、計算リソースの節約が可能になり、１対多数の経路サーチャー１１６によって使用される時間の削減が可能になる。
【００４３】
境界は、任意の適切な形状、たとえば、矩形状または楕円形状でもよい。いくつかの例では、境界マネジャ３０６は、境界エッジ宛先ノードの組を求めることによって、探索を開始する前に境界を決定する。境界エッジ宛先ノードの組は、４つの基本方向の各々について、基本方向における地理的な起点から最も遠い地理的なジョブ位置を有するそれぞれの境界エッジ宛先ノードを含む。
【００４４】
たとえば、境界エッジ宛先ノードは、東、西、北、および南について最大で４つの境界エッジ宛先ノードを含み得る。境界マネジャ３０６はその後、地理的なジョブ位置のうちの最も遠い位置において４つの側辺を有する境界を初期化する。本明細書で説明するように、たとえ境界エッジ宛先ノードが境界のエッジ上になくても、境界は最初は境界エッジ宛先ノードを「取り囲んでいる」と記載される。
【００４５】
いくつかの例では、境界マネジャ３０６は、境界エッジ宛先ノードのうちの１つを訪れることに応じて境界を調節する。これによって、宛先ノードを訪れるといつでも、境界の調節を避けることによって、境界の調節と関連する計算オーバーヘッドを削減することができる。境界エッジ上にない宛先ノードについて、境界の調節は必要ではない。なぜなら、境界は依然として境界エッジノードまで遠く拡張しなければならないからである。
【００４６】
中間ノードを横断することは、各中間ノードにおいて、起点ノードから中間ノードまでグラフを横断する実際の走行コストを格納することを含む。たとえば、中間ノードの横断は、第１の中間ノードにおいて、第１の中間ノードの１つ以上の隣接ノードについて、第１の中間ノードまでの実際の走行コストと第１の中間ノードについてのヒューリスティックな走行コストとに基づく合計コスト推定値を含む。そうすると、中間ノードを横断することは、最も低い合計コスト推定値を有する１つ以上の隣接ノードから第２の中間ノードを選択することと、第２の中間ノードまでグラフを横断することとを含み得る。グラフの探索および中間ノードの横断について、図４Ａ〜図４Ｄおよび図５を参照して以下でさらに説明する。
【００４７】
図４Ａ〜図４Ｄは、３つの地理的なジョブ位置の例までの経路探索シナリオの例を示す図である。図４Ａ〜図４Ｄは、ＸＹ座標空間における４つの地理的な位置Ａ、Ｂ、Ｃ、およびＯを表す。地理的な位置はグラフではノードによって表され、地理的な位置間のルートは、走行コストによって重み付けられるグラフにおいてノード間のエッジによって表される。１対多数の経路サーチャー１１６は、地理的な起点位置Ｏから地理的なジョブ位置Ａ、Ｂ、およびＣまでのコストが最も安いルートを探すように構成されている。
【００４８】
図４Ａでは、１対多数の経路サーチャー１１６は、地理的なジョブ位置Ａ、Ｂ、およびＣを取り囲む境界４０２を作成する。境界４０２は、コンピュータメモリにおいて作成されるものであり、実際の物理的な境界ではない。最初は、境界４０２は地理的な起点Ｏも取り囲んでいるため、１対多数の経路サーチャー１１６は、グラフの横断によってルートの探索を始める際は境界４０２を使用しない。
【００４９】
１対多数の経路サーチャー１１６がグラフを横断する際は、基本的に地理的な起点から全ての方向において外向きに探索を行なう。１対多数の経路サーチャー１１６は地理的なジョブ位置に対応する宛先ノードを訪れると、境界４０２を調節し、残りのまだ訪れていない宛先ノードに向けて探索を集中するために境界４０２を使用して、探索において使用される探索時間および計算リソースを削減しようとする。
【００５０】
図４Ｂでは、１対多数の経路サーチャー１１６は、地理的な起点Ｏと地理的なジョブ位置Ｂとの間のルート４０４を探す。１対多数の経路サーチャー１１６は、地理的なジョブ位置Ｂに対応するグラフにおいて宛先ノードを訪れる。１対多数の経路サーチャー１１６は、ルート４０４に基づいて、仮の実際の走行コストを地理的なジョブ位置Ｂに割り当てる。
【００５１】
残りのまだ訪れていない地理的なジョブ位置までのヒューリスティックな走行コストを求めるために、１対多数の経路サーチャー１１６は、地理的なジョブ位置Ｂではなく地理的なジョブ位置ＡおよびＣを取り囲むように境界４０２を調節する。地理的な起点Ｏは境界４０２の内側ではなくなっているため、１対多数の経路サーチャー１１６は、境界４０２を使用してヒューリスティックな走行コストを求めることができる。地理的なジョブ位置Ｂについてのヒューリスティックな走行コストを求めるために、１対多数の経路サーチャー１１６は、地理的なジョブ位置Ｂから境界４０２までの距離４０６を求める。
【００５２】
たとえば、距離４０６は、境界４０２までの最短の直線距離であり得る。１対多数の経路サーチャー１１６は、最短の直線距離を求めるために任意の適切なアルゴリズムを使用可能である。たとえば、境界４０２は矩形でありＢはＡとＣとの間であるため、１対多数の経路サーチャー１１６は、ＡとＢとの間のＹ軸に沿った距離を求めることによって距離４０６を求めることができる。他の形状の境界については、１対多数の経路サーチャー１１６は、他の種類の距離算出アルゴリズムを使用してもよい。
【００５３】
いくつかの例では、１対多数の経路サーチャー１１６は、距離をさらに処理することによってヒューリスティックな走行コストを求めることができる。たとえば、１対多数の経路サーチャー１１６が走行コストとして推定走行時間を使用していると仮定する。１対多数の経路サーチャー１１６は、距離４０６までの推定時間としてヒューリスティックな走行コストを求めることができる。推定時間は、たとえば、自動車の最高速度もしくは平均速度で走行中の自動車、または最も高速のタイプのルート、たとえば高速道路における最高速度もしくは平均速度で走行中の自動車に基づいて求めることができる。推定時間は、距離４０６を速度で除算することによって求めることができる。
【００５４】
図４Ｃでは、１対多数の経路サーチャー１１６は、地理的な起点Ｏと地理的なジョブ位置Ａとの間のルートを探す。このルートは、ルート４０８と中間位置Ｄを超えたルート４１０との２つのルートを横断することを含む。１対多数の経路サーチャー１１６は、ルート４０８および４１０に基づいて仮の実際の走行コストを地理的なジョブ位置Ａに割り当てる。
【００５５】
残りのまだ訪れていない地理的なジョブ位置までのヒューリスティックな走行コストを求めるために、１対多数の経路サーチャー１１６は、地理的なジョブ位置Ｃを取り囲むように境界４０２を調節する。Ｃは唯一の残りのまだ訪れていない地理的なジョブ位置であるため、境界４０２は地理的なジョブ位置Ｃにおけるただ１つの地点で閉じる。地理的なジョブ位置Ａについてのヒューリスティックな走行コストを求めるために、１対多数の経路サーチャー１１６は、地理的なジョブ位置Ａから地理的なジョブ位置Ｃまでの距離４１２を求める。
【００５６】
図４Ｄにおいて、１対多数の経路サーチャー１１６は、地理的な起点Ｏと地理的なジョブ位置Ｃとの間のルートを探す。このルートは、ルート４１４と中間位置Ｅを超えたルート４１６との２つのルートを横断することを含む。１対多数の経路サーチャー１１６は、ルート４１４および４１６に基づいて仮の実際の走行コストを地理的なジョブ位置Ｃに割り当てる。１対多数の経路サーチャー１１６は、たとえば図６を参照して以下でさらに説明するように、終了条件に到達するまで、地理的なジョブ位置までのより好ましいルートの探索を継続可能である。それによって、ジョブスケジューラ１１４は、地理的なジョブ位置までの実際の走行コストに基づいてジョブのスケジューリングを行なうことができる。
【００５７】
図４Ａ〜図４Ｄでは３つの地理的なジョブ位置のみ示しているが、１対多数の経路サーチャー１１６は、多くの可能性のある経路を有する広大な領域にわたって多数のジョブ位置の探索を行なわなければならない場合がある。そのような場合、１対多数の経路サーチャー１１６までのヒューリスティックな走行コストの使用によって、探索を完了するために必要な時間を大幅に削減することが可能になり、この探索を完了する際に使用される計算リソースを削減することが可能になる。
【００５８】
図５は、グラフを横断する間に中間ノードにおけるヒューリスティックな走行コストを求めるシナリオの例を示す図である。このシナリオでは、１対多数の経路サーチャーは、地理的な起点Ｏについてのノードから中間の地理的な位置Ａについてのノードまでグラフを横断している。１対多数の経路サーチャーは、４の仮の実際の走行コストをＯからＡまでのルートに基づいて当該ノードに割り当てる。
【００５９】
Ａについてのノードを訪れる際に、１対多数の経路サーチャー１１６は、Ａについてのノードが地理的なジョブ位置ＢおよびＣについての２つの隣接ノードを有すると判断する。１対多数の経路サーチャー１１６は、Ａまでの仮の実際の走行コスト（４）とＡからＢまでの走行コスト（３）との合計に基づいて、７の仮の実際の走行コストをＢに割り当てる。１対多数の経路サーチャー１１６は、Ａまでの仮の実際の走行コスト（４）とＡからＣまでの走行コスト（２）との合計に基づいて、６の仮の実際の走行コストをＣに割り当てる。
【００６０】
その後、１対多数の経路サーチャー１１６は、残りの地理的なジョブ位置を取り囲む境界５０２までの距離５０４および５０６に基づいて、ＢおよびＣについてノードにヒューリスティックな走行コストを割り当てる。１対多数の経路サーチャー１１６はその後、隣接ノードＢおよびＣの各々について、仮の実際の走行コストとヒューリスティックな走行コストとを合計して隣接ノードごとに仮の合計走行コストを求めることが可能である。１対多数の経路サーチャー１１６は、仮の合計走行コストに基づいて次に訪れるノードを判断可能である。たとえば、１対多数の経路サーチャー１１６は、最も低い仮の合計走行コストを有するノードを次に訪れることが可能である。
【００６１】
たとえば、距離５０４が２の値を有すると仮定すると、ノードＢは９の仮の合計走行コストを有することになる。さらに距離５０６が４の値を有すると仮定すると、Ｃについてのノードは１０の仮の合計走行コストを有することになる。Ｂについてのノードはより低い仮の合計走行コストを有するため、１対多数の経路サーチャー１１６は、Ｃについてのノードを訪れる前にＢについてのノードを訪れることが可能である。
【００６２】
この例では、たとえＣについてのノードがより低い仮の実際の走行コストを有していたとしても（Ｃについては６であるのに対し、Ｂについては７）、１対多数の経路サーチャー１１６は、Ｃについてのノードを訪れる前にＢについてのノードを訪れることができる。ヒューリスティックな走行コストの使用によって、１対多数の経路サーチャー１１６は、境界５０２の内側の残りのジョブ位置により近い地理的な位置に向かって移動することによって、グラフを横断するように導かれる。１対多数の経路サーチャー１１６を境界５０２に向けて導くことによって、地理的な起点Ｏと地理的なジョブ位置との間の経路についてグラフを探索するために必要な合計時間を削減することが可能である。
【００６３】
ヒューリスティックな走行コストの使用が探索時間の削減につながらない場合がある。たとえば、地理的な起点Ｏが多数の地理的なジョブ位置の中心または中心の近くにある場合に、これは起こり得る。この場合、境界を維持することに何も利点はない。そのため、ヒューリスティックな走行コストを使用しない類似の探索と比較して、探索時間が増加する場合がある。なぜなら、そのような類似の探索は、境界を維持する計算オーバーヘッドを避けるからである。
【００６４】
探索およびデータセットのさまざまな例について１対多数の経路サーチャー１１６を試験することは、所与のシステムについてヒューリスティックな走行コストを使用するべきかどうかを判断するために便利であり得る。１対多数の経路サーチャー１１６は特定の状況においてのみ、たとえば、特定の地理的な領域内での探索または印のあるデータセットにおける探索の場合に、ヒューリスティックな走行コストを使用するように構成可能な場合がある。
【００６５】
図６は、１対多数の経路サーチャーを用いて地理的な起点から地理的なジョブ位置までの走行に基づいてジョブのスケジューリングを行なうための方法６００の例を示すフローチャートである。方法６００は、１つ以上のコンピュータのシステムによって行なうことができる。例示のために、方法６００は、方法６００を行なうシステムについて説明される。
【００６６】
システムは、地理的な起点および多数の地理的なジョブロケーショについて地理的な位置を収集する（６０２）。たとえば、システムは、図２の情報コレクタ２０２を参照して、上述のように情報の収集が可能である。
【００６７】
システムは、地理的なジョブ位置を取り囲む境界を初期化し、地理的な位置に対応するノードと地理的な位置間の走行コストによって重み付けられたノード間のエッジとのグラフにおいて、地理的な起点に対応する起点ノードを特定する（６０４）。グラフは、たとえば、道路網、または飛行機、列車もしくは他の乗物のルート網を表し得る。そうすると、ノードは、交差点、飛行場、または鉄道の駅を表し、エッジは、道路、飛行経路、または線路を表す。
【００６８】
他のノードには最初に、たとえば∞の仮の走行コストをこれらのノードの各々に割り当てることによって、まだ訪れていないと印がつけられる。境界は、矩形状または任意の適切な形状であり得る。
【００６９】
システムは、最初に地理的な起点についてのノードを訪れることによって、グラフの横断を開始する（６０６）。システムは、地理的な起点についてのノードの隣接ノードを特定し、次に隣接ノードの各々において仮の走行コストをアップデートする。各隣接ノードについて、システムは、仮の実際の走行コストを求める。地理的な起点が境界の内側にない場合、システムは、隣接ノードから境界までの距離に基づいてヒューリスティックな走行コストを求める。
【００７０】
たとえば、システムは、隣接ノードから境界までの最短の直線距離を求めることができる。システムは、仮の実際の走行コストおよびヒューリスティックな走行コストに基づいて、隣接ノードについて仮の走行コストを求める。
【００７１】
システムは後で隣接ノードまでのより好ましいルートを発見するため、この時点では、各ノードにおける走行コストは仮のものである。システムが後でより好ましいルートを発見する場合、システムは、ノードの仮の走行コストを後で発見されるより好ましいルートを使用する走行コストで置き換える。
【００７２】
宛先ノードが発見されると、システムは境界を調節する（６１０）。システムは、残りのまだ訪れていない地理的なジョブ位置を取り囲むように境界を調節する。たとえば、システムは、図３の境界マネジャ３０６を参照して上述のように境界を調節可能である。
【００７３】
システムは、終了条件に到達したかどうかを判断することによって、グラフの横断を継続するかどうかを判断する（６１２）。典型的には、システムが地理的なジョブ位置の各々についてノードを訪れていた場合、および、さらなる探索によって地理的なジョブ位置のうちのいずれかまでのより好ましい経路がもたらされない場合、終了条件に到達する。終了条件が時間制限または探索を中止するための他の条件も含み得る例もある。
【００７４】
システムは、地理的なジョブ位置までの走行の仮の合計コストを訪れたノードの各々までの走行の仮の合計コストと比較することによって、より好ましい経路をもたらす探索がないと判断する。訪れたいずれかのノードが地理的なジョブ位置のいずれかまでの走行の現在の合計コストよりも低い仮の合計走行コストを有する場合、終了条件に到達しておらず、システムはこれらのノードを訪れてより好ましい経路をもたらすかどうかを判断する。訪れたノードのうちでより好ましい経路をもたらす走行の仮の合計コストを有するノードがない場合、システムは探索を中止し得る。
【００７５】
たとえば、システムは横断されるべきノードの優先待ち行列を維持し得る。仮の合計走行コストがより低いノードには、行列においてより高い優先順位が与えられる。システムはグラフを横断する際に、行列から最も低い合計走行コストを有するノードを除去でき、除去されたノードの隣接ノードを訪れることができ、これらの隣接ノードを行列に加えることができる。
【００７６】
その後システムは、宛先ノードの全てが行列内のどのノードよりも低い合計走行コストを有するまで、または行列が空になるまで、探索を続けることができる。宛先ノードはより好ましい経路をもたらし得るため、合計走行コストがより低い他のノードが残っている場合、宛先ノードは複数回通過される場合がある。
【００７７】
システムは探索を継続すると判断すると、次に訪れるノードを選択し（６１４）、当該ノードを訪れる（６０６に戻る）。たとえば、システムは、隣接ノードに割り当てられた仮の合計コストに基づいて隣接ノードのうちの１つを選択可能である。システムは、探索を継続しないと判断すると、地理的なジョブ位置までの経路を再構成することによって（６１６）、これらの地理的なジョブ位置のうちの１つ以上までの実際の経路を必要に応じて探す。
【００７８】
たとえば、ジョブスケジューラ１１４が第１のジョブとして地理的なジョブ位置のうちの１つにおいてジョブのスケジューリングを行なうと、システムは、グラフとグラフを探索する間に求められる走行コストとを用いて、当該地理的なジョブ位置までの最適な経路を再構成可能である。いくつかの例では、探索中に経路上の各ノードがそのプロセッサのトラックを維持するようにシステムが構成される。その後、経路を速やかに再構成可能である。なぜなら、宛先ノードはその先行点を示し、グラフにわたってノードを逆方向に横断して経路を決定できるからである。これは、たとえば探索およびジョブスケジューリングの結果生じるスケジュールと共にユーザに指示を与えるために便利であり得る。
【００７９】
システムは、ジョブの各々のスケジューリングが行なわれるまでスケジューリングおよび探索を継続し、その後、スケジュールに基づいてユーザに当該スケジュールを提供する。ユーザはその後、スケジュールによって指定された順番で、および可能であれば探索中に使用されるグラフに基づいて提供される方向に従って地理的なジョブ位置の各々まで走行することによって、または他の誰かを走行させることによって、スケジュールに追従可能である。
【００８０】
したがって、方法、システム、およびコンピュータ可読媒体について特定の実施形態、特徴、および例示的な実施形態に関して説明を行なってきたが、主題の実用性はこのように制限されるわけではなく、むしろ、本明細書の開示に基づいて、本発明の主題の分野の当業者に示唆されるように、多数の他の変形、修正、および代替の実施形態を包含するように拡張されることが理解されるべきである。
【００８１】
本明細書で説明された構造および特徴のさまざまな組合せまたは下位の組合せが考えられ、これらは本開示の知識を有する当業者にとっては明らかである。本明細書で開示されたさまざまな特徴および要素のいずれも、本明細書で逆に示されていない限り、１つ以上の他の開示の特徴および要素と組み合わせることが可能である。それに応じて、後の請求項に記載される主題は、請求項の範囲内で請求項の均等物を含む変形、修正、および代替実施形態の全てを含むと広く解釈され判断されるように意図されている。
【００８２】
本明細書で説明された主題は、ロードマッピングサーバおよびジョブスケジューリングコンピュータシステムなどの特殊用途コンピュータになるように適切にプログラムされた汎用コンピュータにおいて実現可能であり、ジョブスケジューリングおよび地理的なジョブ位置間の１対多数の経路探索において使用される時間および計算リソースを削減することによって、そのようなコンピュータの機能を改善する。１対多数の経路探索で使用される時間を削減することによって、サーバの可用性を改善可能である、および/または、スケジューリングされたジョブまたは探索された経路の数の点でコンピュータの出力を増大可能である。
【００８３】
現在開示されている主題のさまざまな詳細は、現在開示されている主題の範囲内で変更可能であることが理解される。さらに、前述の記載は、限定の目的のためではなく、単に例示のためのものである。
【図１】
2019504988.tif 000003
【図２】
2019504988.tif 000004
【図３】
2019504988.tif 000005
【図４Ａ】
2019504988.tif 000006
【図４Ｂ】
2019504988.tif 000007
【図４Ｃ】
2019504988.tif 000008
【図４Ｄ】
2019504988.tif 000009
【図５】
2019504988.tif 000010
【図６】
2019504988.tif 000011
【国際調査報告】
2019504988.tif 000012
2019504988.tif 000013