【解決手段】方法は、ネットワークを通じてユーザーデバイスからクエリを受信する。クエリは、ウォーキングツアーに対する要請を示し、位置及びウォーキングツアーに対する目標の長さを含む選好度を含む。ユーザーデバイスの位置周辺の地理的領域のグラフを取得する。グラフは、経路の交差点を示すノード及び上記ノードのペアを連結する経路を示すアークを含む。アーク夫々の特性及び選好度に基づいてアークに対するスコアを決定する。アークのうち連結アークを選択する。該連結アークを選択することは、連結アークのスコア、選択された連結アークの長さ及び目標の長さに基づく。ウォーキングツアーの初期設定のために、アークのうち選択された連結アークをウォーキングツアーに追加する及び表示のために、ウォーキングツアーをネットワークを通じてユーザーデバイスに送信する。
上記アークに対するスコアを決定するステップは、上記1つ以上のプロセッサによって、上記アークの中で、オープンストリートマップ(OSM)データベースで識別された川、山及びハイキング登山路のうち少なくとも1つと予め決定された距離内に位置するアークのスコアを増加させるステップ
を含む、請求項1に記載のコンピュータで実行可能な方法。
上記1つ以上のプロセッサによって、上記アークのうち、上記選択された連結アークの中で1つを代替するための少なくとも1つの代案的なアークを決定するステップ;及び
上記ユーザーインターフェース上の上記ウォーキングツアーのディスプレイのために、上記少なくとも1つの代案的なアークを上記ユーザーデバイスに送信するステップ
をさらに含む、請求項1に記載のコンピュータで実行可能な方法。
上記1つ以上のプロセッサによって、上記ウォーキングツアーに沿って上記ユーザーデバイスのユーザーを案内するために、感覚識別可能(sensory discernable)出力デバイスを使用してナビゲーション関連感覚識別可能フィードバックを提供するステップ
をさらに含む、請求項1に記載のコンピュータで実行可能な方法。
【発明の概要】
【0008】
一特徴において、方法は、例えば、公園、川及び/または風景のある領域を通過して旅行し、密集された交通及びそれに伴う汚染のある領域は回避する、快適で、展望の良いまたは展望が良くて興味深い道路及び/または経路を有するツアー(つまり、旅行または旅程)を決定する。方法は、主要道路及び高速道路にペナルティを付与することによってツアーを決定するステップを含む。
【0009】
追加の特徴において、方法は、相当な計算リソースに対する必要性を最小化するために効率的に動作する。
【0010】
追加の特徴において、方法は、ツアーの長さ、ツアーに沿って見ることになる関心地域または風景、経路の優先される類型(例えば、徒歩(pedestrian)または住居(residential))、公園との近接性及びツアーの高度プロファイル(傾き(または傾斜度)、及び/または全体獲得高度)のようなツアーに対するユーザーの選好度(すなわち、ユーザー選好度)を考慮する。
【0011】
追加の特徴において、方法は、プロセッサによって、同じ場所で開始し、その場所に復帰するツアーを生成するステップを含み、ツアーは、ユーザー選好度に基づいてパーソナライズされ、これは特定の長さを含み、交差点及び交差点の間の道路のセットが含まれた地理的マップがグラフで配列されるように含まれ、交差点は、ノードで表現され、交差点の間の道路は、アークで表現され、データプロセッサは、下記のようにグラフを使用してツアーを計算する:ユーザー選好度に基づいて、グラフのアークをスコアリング(scoring)し;1つ以上の経路セグメントを追加することによってツアーを初期化(initializing)し;ツアーの経路セグメントの一部を、ユーザー選好度を増進させる経路セグメントを示す経路セグメントスコアを有する経路セグメントに代替することによって、(例えば、与えられたマージン内で特定された長さに達することによって)、ツアーを最適化し;ツアーをユーザーインターフェース上の表示のために出力する。
【0012】
追加の特徴において、方法は、直観的であって、より良いツアーの生成を許容し、第1循環型ツアーに対する改善点を提供する。
【0013】
追加の特徴において、方法は、アークの近傍に対して多角形のような複雑な表現の使用を避ける。
【0014】
追加の特徴において、方法は、相当なコンピューティングリソースを必要とせずに、ユーザーにとって意味のある循環型ツアーを提供する。
【0015】
追加の特徴において、方法は、開始点を離れる第1のアーク及び最短経路セグメントを有する開始点に入る第2のアークのリンクを初期化するステップ、及び現在のノードをツアーの開始点に初期化及び設定するステップを含む。最適化することは、ツアーの合計長さが特定された長さ及び許容可能なマージンによって決定された、その与えられたしきい値より低い間、下記のステップを反復的に遂行することをさらに含む:与えられたパラメータのセットを有する連続確率分布からツアーに追加する次のアーク上で移動ランダム距離(d)を導出するステップ;現在のノードから与えられた距離内のグラフ内のノードのセットを計算するステップ;以前のステップにおいて計算されたノードのセットが空である場合、ステップa)に戻り、究極的にパラメータのセットを修正、または下記のステップを継続して遂行するステップ;ノードのセットのそれぞれのノード(p)に対して、下記のステップを反復的に遂行するステップ:最短経路セグメントのような、現在のノードからノード(p)まで計算された経路セグメントのスコアを計算するステップ;ツアーの合計長さが経路セグメントの特定された長さを超えないように、ノード(p)からツアーの開始点まで戻る経路セグメントが存在することを検証するステップ;計算された経路セグメントのスコアを計算するステップ;候補ノードの関連する計算された経路のスコアに基づいて、そのリストを整列するステップ;及び最高スコアを有する経路セグメントと関連するノードを選択、または最適のk個の経路のうち1つをランダムに選択するステップを含み、kは、本方法のパラメータである。
【0016】
追加の特徴において、方法は、ツアー内の迂回(detour)を避けることを目的とする後処理ステップ;与えられた因数(factor)によって、経路セグメントの開始ノードから経路セグメントの終了ノードまでの最短経路セグメントよりも長いツアーの経路セグメントを発見することによって、非適合迂回のリストを生成するステップ;非適合迂回のリストを与えられたしきい値より低いスコアを有するツアーの経路セグメントに制限するステップ;及び/または非適合迂回のリスト内の経路セグメントを関連する最短経路セグメントに代替するステップをさらに含む。
【0017】
追加の特徴において、方法は、初期ルートをツアーのアークのサブセットとして定義するステップ及び与えられた反復回数に対して、下記のステップを遂行するステップを含む:ルート内の連続的なアークの(ABとEF)のそれぞれのペアに対して(A、B、E及びFは、グラフのノードである)、下記のステップを反復的に遂行するステップ:すべての実現可能なツアーを列挙するステップであって、BからEへの以前に選択された経路セグメントが次を含むシーケンス:新しいアーク(CD);BからCまでの最短経路セグメント;DからEまでの最短経路セグメントに代替される、ステップ;BからEまでの新しい経路セグメントのそれぞれに対して、下記のステップを反復的に遂行するステップ:それぞれの新しいツアーのスコアを評価するステップ;新しいツアーのリストをそのスコアによって整列するステップ;最高スコアを有する新しいツアーを選択、または最適のk個のツアーのうち1つをランダムに選択するステップであって、kは与えられた整数である、ステップ;及び現在のツアーのいくつかのアークを選択してルートをアップデートするステップを含む。
【0018】
追加の特徴において、方法は、循環型ツアー内の迂回を避けることを目的とする後処理ステップ、与えられた因数により、経路セグメントの開始ノードから経路セグメントの終了ノードまでの最短経路セグメントよりも長いツアーの経路セグメントを発見することによって、非適合迂回のリストを生成するステップ、非適合迂回のリストを与えられたしきい値より低いスコアを有するツアーの経路セグメントに制限するステップ、及び/または非適合迂回のリストの経路セグメントを関連する最短経路セグメントに代替するステップを含むことができる。
【0019】
追加の特徴において、ユーザー選好度のセットは、高度選好度を含む。
【0020】
追加の特徴において、高度選好度は希望獲得高度インターバル(獲得高度は、ツアーのアークの間のすべての正(positive)の高度の合計である);及び/または希望最大傾斜度を含む。
【0021】
追加の特徴において、グラフのアークの長さは:アークの長さ;ユーザーの希望最大傾斜度より高い傾斜度を有するアークにペナルティを付与するためのペナルティ項目を含む加重値項目に代替されることができる。
【0022】
追加の特徴において、方法は、第1の目標は、希望獲得高度を達成するものであって、第2の目標は、獲得高度を制約条件に維持しながら、スコアを最大化する階層的最適化の方法を含むことができる。
【0023】
追加の特徴において、第1のツアーを構成する前に、方法は、開始点からの獲得高度が与えられたマージン内で希望獲得高度である中間点を選択するステップを含むことができる。
【0024】
追加の特徴において、コンピュータプログラム製品は、方法を実行するためのコード命令、及び方法を実行するためのコード命令を含むコンピュータプログラム製品が格納されたコンピュータで読み取り可能な媒体を含む。
【0025】
一特徴において、コンピュータプログラムウォーキングツアーを生成するコンピュータで実行可能な方法は:1つ以上のプロセッサによって、ネットワークを通じてユーザーデバイスからクエリ(query)を受信するステップであって、クエリは、ウォーキングツアーに対する要請を示し、(a)位置及び(b)ウォーキングツアーに対する目標の長さを含む選好度を含む、ステップ;1つ以上のプロセッサによって、ユーザーデバイスの位置周辺の地理的領域のグラフを取得するステップであって、グラフは、経路の交差点を示すノード及びノードのペアを連結する経路を示すアーク(arc)を含む、ステップ;1つ以上のプロセッサによって、アークそれぞれの特性(例えば、長さ、傾斜度、高度など)及び選好度に基づいてアークに対するスコアを決定するステップ;1つ以上のプロセッサによって、アークのうち連結アークを選択するステップであって、アークのうち連結アークを選択することは、アークのうち連結アークのスコア、アークのうち選択された連結アークの長さ及び目標の長さに基づく、ステップ;1つ以上のプロセッサによって、ウォーキングツアーの初期設定(initialize)のために、アークのうち選択された連結アークをウォーキングツアーに追加するステップ;及び1つ以上のプロセッサによって、ユーザーインターフェース上の表示のためにウォーキングツアーを、ネットワークを通じてユーザーデバイスに送信するステップを含む。
【0026】
追加の特徴において、アークのうち連結アークを選択するステップは、1つ以上のプロセッサによって、ウォーキングツアーがある1つの位置で開始し、ある1つの位置で終了するように、アークのうち連結アークを選択するステップを含む。
【0027】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で、オープンストリートマップ(Open Street Map、OSM)データベースで識別された歩行経路(foot path)、住居経路(residential path)及び徒歩経路(pedestrian path)のうち少なくとも1つに対応するアークのスコアを増加させるステップを含む。
【0028】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で、選好度に含まれたユーザー定義経路類型と同一な経路類型を有するアークのスコアを増加させるステップを含む。
【0029】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で、選好度に含まれたユーザー定義経路類型と異なる経路類型を有するアークのスコアを減少させるステップを含む。
【0030】
アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で、オープンストリートマップ(OSM)データベースで識別された公園、オープンスペース(open spaces)、景観の良い関心地域(scenic points of interest)及び地理的形態のうち少なくとも1つと予め決定された距離内に位置するアークのスコアを増加させるステップを含む。
【0031】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で、オープンストリートマップ(OSM)データベースで識別された川、山及びハイキング登山路のうち少なくとも1つと予め決定された距離内に位置するアークのスコアを増加させるステップを含む。
【0032】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で、オープンストリートマップ(OSM)データベースで識別された車両道路と予め決定された距離内に位置するアークのスコアを減少させるステップを含む。
【0033】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で、オープンストリートマップ(OSM)データベースで識別された関心地点を通過するアークのスコアを増加させるステップを含む。
【0034】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、アークの中で2つのアークの間の交差角に基づいて2つのアークのスコアを選択的に減少させるステップを含む。
【0035】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、ツアーが、アークの中で1つのアークを2回以上含むことに基づいて、1つのアークのスコアを減少させるステップを含む。
【0036】
追加の特徴において、アークに対するスコアを決定するステップは、1つ以上のプロセッサによって、ツアーが、2つのノードの中で1つを2回以上通過することに基づいて、2つのノードの間のアークのうち1つのアークのスコアを減少させるステップを含む。
【0037】
追加の特徴において、アークのうち連結アークを選択するステップは、1つ以上のプロセッサによって:(a)第1の位置から開始して、第1の位置と異なる第Nの位置で終了される第1のアークを選択するステップ;(b)第Nの位置と距離d内にあるノードを識別するステップ;(c)第Nの位置から開始して、ノードで終了されるアークをそれぞれ識別するステップ;(d)識別されたアークのスコアに基づいて識別されたアークのうち1つのアークを選択するステップであって、アークのうち選択された連結アークを追加するステップは、識別されたアークのうち1つの選択されたアークをウォーキングツアーに追加するステップを含む、ステップ;及び(e)ウォーキングツアーの長さが選好度に含まれた目標の長さの予め決定された範囲内に入るまで(b)〜(d)を反復するステップを含む。
【0038】
追加の特徴において、1つ以上のプロセッサによって、距離dをランダムに選択するステップを含む。
【0039】
追加の特徴において、1つ以上のプロセッサによって、第Nの位置と距離d内に0個のノードが位置するとき、距離dを増加させるステップを含む。
【0040】
追加の特徴において、(d)識別されたアークのうち1つのアークを選択するステップは、1つ以上のプロセッサによって:識別されたアークのうち、k個の最も高いスコアを有するk個のアークを識別するステップであって、ここでkは1より大きい整数である、ステップ;及び識別されたアークのうちk個のアークから識別されたアークの中で、1つのアークをランダムに選択するステップを含む。
【0041】
追加の特徴において、(d)識別されたアークのうち1つのアークを選択するステップは、1つ以上のプロセッサによって、識別されたアークのうち最も高いスコアを有する1つのアークを選択するステップを含む。
【0042】
追加の特徴において、ウォーキングツアーを、ネットワークを通じてユーザーデバイスに送信するステップ以前に、1つ以上のプロセッサによって:アークのうち、選択された連結アークの中で1つのアークを選択するステップ;アークのうち、選択された連結アークの中で1つのアークを代替するための1つ以上の代替アークを識別するステップ;及びウォーキングツアー内でアークのうち、選択された連結アークの中で1つのアークを1つ以上の代替アークに代替するステップを含む。
【0043】
追加の特徴において、1つ以上の代替アークを識別するためのステップは、1つ以上の代替アークのスコアに基づいて1つ以上の代替アークを識別するステップを含む。
【0044】
追加の特徴において、ウォーキングツアーを、ネットワークを通じてユーザーデバイスに送信するステップ以前に、1つ以上のプロセッサによって:第1のノードと第2のノードの間の経路セグメントを選択するステップであって、経路セグメントは、アークのうち選択された連結アークの中で1つ以上のアークを含む、ステップ;及び(a)と(b)の比較に基づいて、経路セグメントを第1のノードと第2のノードの間の最短経路セグメントに選択的に代替するステップを含み、(a)は、最短経路セグメントの第1のスコアを、最短経路セグメントの第1の長さで割った値であり、(b)は、経路セグメントの第2のスコアを、経路セグメントの第2の長さで割った値である。
【0045】
追加の特徴において、経路セグメントを第1のノードと第2のノードの間の最短経路セグメントに選択的に代替するステップは、経路セグメントの第2の長さが最短経路セグメントの第1の長さの2倍より長く、経路セグメントの第2のスコアが第1の予め決定された値*(経路セグメントのアークのうち選択された連結アークの中で1つ以上のアークのスコアの第1の和)*(経路セグメントのアークのうち選択された連結アークの中で1つ以上のアークの数)より少なく、(a)が第2の予め決定された値と(b)を乗じたものより大きい場合、経路セグメントを第1のノードと第2のノードの間の最短経路セグメントに代替するステップを含む。
【0046】
追加の特徴において、選好度は、目標獲得高度をさらに含み;スコアを決定するステップは、
1つ以上のプロセッサによって、アークの獲得高度及び目標獲得高度に基づいてアークに対するスコアを決定するステップを含む。
【0047】
追加の特徴において、選好度は、最大傾斜度(steepness)をさらに含み、スコアを決定するステップは、1つ以上のプロセッサによって、アークの傾斜度及び最大傾斜度に基づいてアークに対するスコアを決定するステップを含む。
【0048】
追加の特徴において、ウォーキングツアーを、ネットワークを通じてユーザーデバイスに送信した後:1つ以上のプロセッサによって、ネットワークを通じてウォーキングツアーの目標の長さを調整するための要請をユーザーデバイスから受信するステップ;要請の受信に応答して、調整された目標の長さに基づいて:アークのうち、選択された連結アークの中で少なくとも1つのアークを選択するステップ;アークのうち、選択された連結アークの中で少なくとも1つのアークを代替するための1つ以上の代替アークを識別するステップ;アークのうち、選択された連結アークの中で少なくとも1つのアークを1つ以上の代替アークで代替して、アップデートされたウォーキングツアーを生成するステップ;及びユーザーインターフェース上の表示のために、アップデートされたウォーキングツアーを、ネットワークを通じてユーザーデバイスに送信するステップをさらに含む。
【0049】
追加の特徴において、要請を受信するステップは、ユーザーデバイスがウォーキングツアーの少なくとも一部に付いて行った後に、要請を受信するステップを含む。
【0050】
追加の特徴において、要請は、目標の長さの増加及び減少のうち1つに対する要請を含む。
【0051】
追加の特徴において、アークのうち連結アークを選択するステップは、以前に付いて行ったウォーキングツアーに関するユーザーデータなしに、アークのうち連結アークを選択するステップを含む。
【0052】
追加の特徴において、1つ以上のプロセッサによって、アークのうち、選択された連結アークの中で1つを代替するための少なくとも1つの代案的なアークを決定するステップ;及びユーザーインターフェース上のウォーキングツアーのディスプレイのために、少なくとも1つの代案的なアークをユーザーデバイスに送信するステップをさらに含む。
【0053】
追加の特徴において、少なくとも1つの代案的なアークを決定するステップは、ウォーキングツアーの開始前に、少なくとも1つの代案的なアークを決定するステップを含む。
【0054】
追加の特徴において、少なくとも1つの代案的なアークを決定するステップは、ウォーキングツアーの横断の間、受信されたウォーキングツアーの目的の長さの調整を所望する要請を表すユーザー入力の受信に応答して、少なくとも1つの代案的なアークを決定するステップ
を含む。
【0055】
追加の特徴において、ユーザーデバイスが少なくとも1つの代案的なアークに進入すること;及びユーザーデバイスが少なくとも1つの代案的なアークを抜けていくことのうち少なくとも1つに応答して、ユーザーデバイスによって、視覚、聴覚またはハプティック出力のうち1つの不在または存在を利用してシグナリングするステップをさらに含む。
【0056】
追加の特徴において、1つ以上のプロセッサによって、ウォーキングツアーに沿ってユーザーデバイスのユーザーを案内するために、感覚識別可能(sensory discernable)出力デバイスを使用してナビゲーション関連感覚識別可能フィードバックを提供するステップをさらに含む。
【0057】
一特徴において、ウォーキングツアーを生成するためのシステムは、1つ以上のプロセッサ;及びコードを含むメモリを含み、コードは、1つ以上のプロセッサによって実行されるとき:ネットワークを通じてユーザーデバイスからクエリを受信する機能であって、クエリは、ウォーキングツアーに対する要請を示し、(a)位置及び(b)ウォーキングツアーに対する目標の長さを含む選好度を含む、機能;ユーザーデバイスの位置周辺の地理的領域のグラフを取得する機能であって、グラフは、経路の交差点を示すノード及びノードのペアを連結する経路を示すアークを含む、機能;アークそれぞれの特性及び選好度に基づいてアークに対するスコアを決定する機能;アークのうち連結アークを選択する機能であって、アークのうち連結アークを選択することは、アークのうち連結アークのスコア、アークのうち選択された連結アークの長さ及び目標の長さに基づく、機能;ウォーキングツアーの初期設定のために、アークのうち選択された連結アークをウォーキングツアーに追加する機能;及びユーザーインターフェース上の表示のために、ウォーキングツアーを、ネットワークを通じてユーザーデバイスに送信する機能を含む機能を遂行する。
【0058】
一特徴において、ウォーキングツアーを生成するためのシステムは、ネットワークを通じてユーザーデバイスからクエリを受信するための手段(例えば、受信機)であって、クエリは、ウォーキングツアーに対する要請を示し、(a)位置及び(b)ウォーキングツアーに対する目標の長さを含む選好度を含む、手段;ユーザーデバイスの位置周辺の地理的領域のグラフを取得し、グラフは、経路の交差点を示すノード及び上記ノードのペアを連結する経路を示すアークを含み;アークそれぞれの特性及び選好度に基づいてアークに対するスコアを決定し;アークのうち連結アークを選択し、アークのうち連結アークを選択することは、アークのうち連結アークのスコア、アークのうち選択された連結アークの長さ及び目標の長さに基づき;ウォーキングツアーの初期設定のために、アークのうち選択された連結アークをウォーキングツアーに追加するための手段(例えば、1つ以上のプロセッサ及びコード);及びユーザーインターフェース上の表示のために、ウォーキングツアーを、ネットワークを通じてユーザーデバイスに送信するための手段(例えば、転送機)を含む。
【0059】
本開示の追加の適用分野は、発明を実施するための具体的な内容、請求の範囲及び図面から明らかになるはずである。発明を実施するための具体的な内容及び特定の例は、単に例示のためのものであって、本開示の範囲を制限しようとするものではない。
【発明を実施するための形態】
【0061】
システムアーキテクチャ
図1aは、ウォーキングツアーに対するルートに関するクエリに応答するように構成されたツアー生成システム(10)を含む機能ブロック図を含む。ツアー生成システム(10)は、ネットワーク(16)を通じて1つ以上のユーザーのコンピューティングデバイス(14)からウォーキングツアーに対するクエリを受信するように構成される。
【0062】
ツアー生成システム(10)は、クエリに基づいてウォーキングツアーのためのルートをそれぞれ決定する。ツアー生成システム(10)は、ウォーキングツアーに対するルートに関する応答を、クエリを送信したユーザーデバイス(14)にそれぞれ再度送信する。
【0063】
ユーザーデバイス(14)は、ウォーキングツアーに対するルートをユーザーデバイス(14)のディスプレイ上にそれぞれ表示する。ユーザーデバイス(14)は、ユーザーがユーザーデバイス(14)を持ってルートを横断する間、ルートに付いて行くための命令も(聴覚的に及び/または可視的に)出力することができる。例えば、ユーザーデバイス(14)は、ユーザーがユーザーデバイス(14)を持ってルートを横断する間、例えば、その全体開示内容が本明細書に参照として含まれるタイトル「System and Method for Communicating Possible Travel paths Through Head Scanning and Sound Modulation」の米国特許出願番号第16/592,943号に開示された装置及び方法を使用して、いつ/どこで方向を変えるべきか、どちら側に方向を変えるべきかなどに関する命令を出力することができる。ユーザーデバイス(14)は、他の情報をユーザーに表示することもできる。例えば、ユーザーデバイス(14)は、ルートに沿った関心地域(point of interest、POI)それぞれに関する追加情報及びルートと関連した情報などをそれぞれ表示することができる。ツアー生成システム(10)及びユーザーデバイス(14)は、ネットワーク(16)を通じて通信する。
【0064】
複数の異なるタイプのユーザーデバイス(14)が
図1aに図示されている。個別のユーザーのコンピューティングデバイスは、本明細書においてユーザーデバイス(14)と称されることもできる。ユーザーデバイス(14)は、ウォーキングツアーに対するクエリを生成し、ネットワーク(16)を通じてツアー生成システム(10)に送信するように構成された任意のタイプのコンピューティングデバイスを含む。ユーザーデバイス(14)の例は、
図1aに図示されたように、スマート(セルラー)フォン、パーソナルメディアデバイス(例えば、アイポッドなど)、タブレットコンピュータ及びラップトップコンピュータを含むが、これらに限定されない。ユーザーデバイス(14)は、モバイルゲームデバイス、モバイルテレビ、コンソール、ナビゲーションデバイス、ウェアラブルデバイス(例えば、スマートウォッチ、拡張現実メガネ、仮想現実メガネ)などのような異なるフォームファクタを有する他のコンピューティングデバイスも含むことができる。
【0065】
ユーザーデバイス(14)は、様々な異なるオペレーティングシステムを使用することができる。ユーザーデバイス(14)がモバイルデバイスである例示において、ユーザーデバイス(14)は、アンドロイド、アップル社(Apple Inc.)によって開発されたiOS、またはマイクロソフト社(Microsoft Corporation)によって開発されたウィンドウズフォンを含むオペレーティングシステムを実行することができるが、これに限定されない。ユーザーデバイス(14)がラップトップまたはデスクトップデバイスである例示において、ユーザーデバイス(14)は、マイクロソフトウィンドウズ、Mac OS、またはリナックスを含むオペレーティングシステムを実行することができるが、これに限定されない。ユーザーデバイス(14)は、現在利用可能なものや将来開発されるものに関係なく、前述したオペレーティングシステム以外のオペレーティングシステムを実行しながらツアー生成システム(10)にアクセスすることもできる。
【0066】
一部の例示において、ユーザーデバイス(14)は、ユーザーデバイス(14)上に設置されたアプリケーションを使用してツアー生成システム(10)と通信することができる。一般的に、ユーザーデバイス(14)は、ツアー生成システム(10)からの応答を受信できるように、クエリをツアー生成システム(10)に送信することができる任意のアプリケーションを使用してツアー生成システム(10)と通信することができる。一部の例示において、ユーザーデバイス(14)は、ウォーキングツアー生成専用アプリケーションのような、ツアー生成システム(10)とインタフェーシングするのに専用のアプリケーションを実行することができる。一部の例示において、ユーザーデバイス(14)は、ウェブブラウザアプリケーションのような、より一般的なアプリケーションを使用してツアー生成システム(10)と通信することができる。ツアー生成システム(10)と通信するためにユーザーデバイス(14)によって実行されるアプリケーションは、グラフィックユーザーインターフェース(GUI)上にユーザーが質問を入力することができる検索フィールドを表示することができる。ユーザーは、タッチスクリーンまたは物理的キーボード、音声-テキストプログラムまたは他の形態のユーザー入力を使用して質問を入力することができる。
【0067】
ユーザーデバイス(14)上のGUIに入力されたクエリは、単語、数字、文字、文章符号及び/または記号を含むことができる。一般的に、クエリはツアー生成システム(10)からウォーキングツアーに対するルートに関する要請であることができ、ここでウォーキングツアーの開始点と終了点は同じである。ウォーキングツアーの開始点と終了点は、例えば、ユーザーデバイス(14)の(例えば、ユーザーデバイス(14)のグローバルポジショニングシステムからの)現在位置であることができる。ユーザーデバイス(14)の現在位置は、ユーザー選好度、ツアーの長さ、高度の変化及び他の情報のような他の情報と共にクエリに含まれることができる。
【0068】
ユーザーデバイス(14)は、ツアー生成システム(10)に送信されたクエリに応答するツアー生成システム(10)からの応答を受信することができる。多様な具現において、ツアー生成システム(10)は、1つより多くの異なる、可能なルートを送信することができ、ユーザーデバイス(14)はそれらを受信することができる。多数のルートを提供するツアー生成システム(10)の例示において、ユーザーは、ユーザーデバイス(14)を通じてルートのうち1つを付いて行くルートとして選択することができる。
【0069】
ユーザーデバイス(14)は、ツアー生成システム(10)からのルートを表示するGUIを含むアプリケーションを実行していることができる。前述したように、ウォーキングツアーのためのルートをユーザーに提示するアプリケーションは、一部の例示においてツアー生成システム(10)とインタフェーシングするための専用アプリケーションであることができる。他の例示において、アプリケーションは、ウェブブラウザアプリケーションのようなより一般的なアプリケーションであることができる。
【0070】
一部の例示において、ツアー生成システム(10)または他のコンピューティングシステムは、制限するものではないが、ウォーキングツアーのルートに沿った関心地域及び/またはウォーキングツアーのルートに関連する他の情報のような追加情報をユーザーデバイス(14)に送信することができる。一部の例示において、この追加情報はデータの保存領域に格納されることができ、ツアー生成システム(10)によってユーザーデバイス(14)に送信されることができる。ユーザーデバイス(14)が追加情報を受信する例示において、GUIは、ルートと共に追加情報を表示することができる。
【0071】
一部の例示において、ユーザーデバイス(14)は、パートナーコンピューティングシステムを通じてツアー生成システム(10)と通信することができる。パートナーコンピューティングシステムは、ツアー生成システム(10)の機能をレバレッジ(leverage)することができる第3者コンピューティングシステムを含むことができる。パートナーコンピューティングシステムは、ツアー生成システム(10)を動作させる会社またはその他の組織に属することができる。ツアー生成システム(10)の機能をレバレッジすることができる例示的な第3者は、インターネット検索プロバイダー及び無線通信サービスプロバイダーを含むことができるが、これに限定されない。ユーザーデバイス(14)は、パートナーコンピューティングシステムを通じてツアー生成システム(10)にクエリを送信することができる。ユーザーデバイス(14)はまた、パートナーコンピューティングシステムを通じてツアー生成システム(10)からの応答を受信することができる。パートナーコンピューティングシステムは、一部の例示において、ユーザーデバイス(14)にユーザーインターフェースを提供し/したり、ユーザーデバイス(14)に提供されたユーザー経験を修正することができる。
【0072】
ツアー生成システム(10)は、データソース(20)からウォーキングツアーに対するルートを生成するためのマッピング情報を取得することができる。データソース(20)は、1つ以上のマッピング情報提供者を含むことができる。
【0073】
ユーザーデバイス(14)、ツアー生成システム(10)及びデータソース(20)は、ネットワーク(16)を通じて互いに通信することができる。ネットワーク(16)は、広域ネットワーク(WAN)及び/またはインターネットのような多様なタイプのネットワークを含むことができる。ネットワーク(16)は、長距離ネットワーク(例えば、インターネットまたはWAN)を意味することができるが、一部の具現においてネットワーク(16)は、近距離通信網(LAN)のような近距離ネットワークを含むことができる。一実施例において、ネットワーク(16)は、標準通信技術及び/またはプロトコルを使用する。したがって、ネットワーク(16)は、イーサネット、WiFi(Wireless Fidelity)(例えば、802.11)、WIMAX(Worldwide Interoperability for Microwave Access)、3G、4G、5G、LTE(Long Term Evolution)、DSL(Digital Subscriber Line)、ATM(Asynchronous Transfer Mode)、InfiniBand、PCI Express Advanced Switchingなどのような技術を使用するリンクを含むことができる。同様に、ネットワーク(16)上で使用されるネットワーキングプロトコルは、MPLS(MultiProtocol Label Switching)、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP(User Datagram Protocol)、HTTP(HyperText Transport Protocol)、SMTP(Simple Mail Transfer Protocol)、FTP(File Transfer Protocol)などを含むことができる。ネットワーク(16)を通じて交換されるデータは、HTML(HyperText Markup Language)、XML(eXtensible Markup Language)などを含む技術及び/またはフォーマットを使用して表現されることができる。また、すべてのリンクまたは一部のリンクが、SSL(Secure Sockets Layer)、TLS(Transport Layer Security)、VPN(Virtual Private Networks)、IPsec(Internet Protocol Security)などのような従来の暗号化技術を使用して暗号化されることができる。他の例示において、ネットワーク(16)は、前述したものの代わりに、またはそれに付加してカスタム及び/または専用のデータ通信技術を使用することができる。
【0074】
本明細書に提示されたツアー生成方法は、
図1bに図示されたようなシステムアーキテクチャ内で具現されることができ、システムは、ネットワーク(16)を通じて通信する2つのサーバー(55、60)及びユーザーデバイス(14)を含む。2つのサーバー(55、60)は、ツアー生成システム(10)の一部であることができる。それぞれのサーバー(55、60)及びユーザーデバイス(14)は、データプロセッサ(それぞれ、61a、61c、61b)及びハードディスクのようなメモリ(それぞれ、72a、72c、72b)を含む。
【0075】
サーバー(55)は、マップサーバーであることができ、例えば、オープンストリートマップ(OSM)のようなAPI(Application Programming Interface)によってアクセス可能な外部サービスであることができる。
【0076】
サーバー(60)は、高度データサーバーであることができ、例えば、フランス国立地理及び林業情報研究所(IGN; French National Institute of Geographic and Forestry Information)からのBD ALTI(登録商標)のようなAPIによってアクセス可能な外部サービスであることができる。
【0077】
ユーザーデバイス(14)は、そのユーザーインターフェース(例えば、ディスプレイ及び/またはスピーカー)上に、ユーザー(80)に循環型ウォーキングツアーを提示するのに使用される。循環型ウォーキングツアーは、同じ位置で開始して終了するウォーキングツアーを称することができる。
【0078】
一実施例において、本明細書に提示されたツアー生成方法は、サーバー(55)、サーバー(60)及び/またはユーザーデバイス(14)上で動作する。また、ツアー生成方法は、サーバー(55)、サーバー(60)及び/またはユーザーデバイス(14)と通信する独立サーバー上で動作することができる。
【0079】
他の実施例において、サーバー(55、60)は併合されることができる。他の実施例において、2つのサーバー(55、60)のうち1つまたは両方の機能は、独立型(standalone)ユーザーデバイス(14)に併合されることができる。
【0080】
マップ表現及び用語
マップは、ツアー生成方法によって、徒歩経路(道路、登山路(trail)、歩道、経路など)交差点(つまり、交差地点)がノードで表現されるグラフ(例えば、方向性グラフ(directed graph))として表現される。2つの交差点の間のすべての経路は、エッジまたは関連する方向を有するアーク(有向エッジ)によって表現される。有向エッジは、2つのノードの間に関連する方向を有するエッジである。エッジは、それぞれの方向ごとに1つずつ、2つの有向アークに代替されることができ、また、それぞれのアークの方向に対する知識が要求されない限り、2つのアークはエッジに代替されることができる。
【0081】
経路は、両方向に見做されることができる。したがって、エッジは、経路上の歩行者の方向を考慮するために、反対方向の2つのアークに代替されることができる。
【0082】
経路セグメントは、連続的なエッジまたはアークのリストである。経路セグメントは、1つ以上のエッジまたはアークを含むことができる。ルートは、原点ノードで開始して終点ノードで終了するエッジまたはアーク(必ずしも隣接する必要はない)の順序化されたリストである。連結経路(linking path)は、ルートの2つのアークを連結する経路セグメントである。与えられたルートと関連するツアーは、ルートから取得されたアーク及びその間の連結経路を含む(例えば、循環)経路である。
【0083】
マップの表現をグラフ(例えば、方向性グラフ)で使用し、ツアー生成方法は、2つのNP-ハード組み合わせの問題(NP-hard combinatorial problem):(1)予算の制約内で(ユーザー選好度に基づいて)最も高い価値をユーザーにもたらす経路セグメントをマップ上で選択することが目標である第1の(ナップサック(knapsack))問題;及び(2)そのような経路セグメントを訪問する最短ルートを見つけるのが目標である第2の(旅行するセールスマン(traveling salesman))問題を解決することによって、快適な循環型ウォーキングツアーを生成する。
【0084】
ツアーの生成
与えられた経路に対するスコア関数
ツアー生成方法は、下記の情報を受信する:ウォーキングツアーが開始されて終了される位置;及び地域(地域のマップ形態内にウォーキングツアーが位置される)。さまざまな具現において、位置は、ツアー要請が受信されたユーザーデバイス(14)の位置であることができる。
【0085】
ツアー生成方法によって選択された、与えられた経路セグメントに対して、ツアー生成方法は、標準OSMデータを使用して経路セグメントスコアを決定するステップ、及びスコアを経路セグメントにそれぞれ割り当てるステップを含む。経路セグメントに割り当てられた経路セグメントスコアは、例えば、サーバー(55)のデータプロセッサ(61a、61b)及び/またはユーザーデバイス(14)によって決定されることができる。経路セグメントに割り当てられた経路セグメントスコアは、経路セグメントがそれぞれツアーにもたらす価値を示す。経路セグメントのスコアは、ツアーに対する経路セグメントの価値が増加することによって増加することができ、その逆も同様である。与えられた経路セグメントに対して、ツアー生成方法は、報酬及びペナルティの項目を通じて経路セグメントスコアを決定するステップを含む。
【0086】
例えば、スコアリング加重値(weight(e))は、与えられた経路セグメントのそれぞれの有向エッジe(つまり、アークe)に対して、その有向エッジに対して決定された報酬及びペナルティを合算することによって決定することができる。例えば、与えられた有向エッジeに対するツアー生成方法の決定は、下記の通りであることができる:
1.OSMタイプの経路を使用する。
【0087】
ツアー生成方法は、OSMデータ内のそれぞれの有向エッジを下記のカテゴリー、すなわち、「徒歩(pedestrian)」、「徒歩_トラック(foot_track)」または「住居(residential)」のうち1つのような経路情報の類型と関連させる。
【0088】
ツアー生成方法は、ユーザーによって選好されるタイプの経路に対応するOSMデータから抽出された、有向エッジに報酬を割り当てる。ツアー生成方法は、有向エッジが希望しない(ユーザーが好まない)タイプの経路に属する場合、報酬(そしてペナルティ)を割り当てない。例えば、ツアー生成方法は、主要(車両)道路より歩行者道路により高いスコアを割り当てることができる。
【0089】
2.公園及び土地の用途情報を使用する。
【0090】
ツアー生成方法は、公園、オープンスペース、過去の景観の良い風景(past scenic vistas)及びその他の地理的形態(例えば、川、山など)内に、または付近に位置するOSMデータから抽出された、有向エッジに報酬を割り当てる。例えば、ツアー生成方法は、川に沿った有向エッジ及びハイキング登山路に属する有向エッジに報酬を割り当てることができる。
【0092】
ツアー生成方法は、車両の道路に対応するOSMデータから抽出された、有向エッジにペナルティを割り当てる。ツアー生成方法は、また、車両の道路の横の有向エッジにペナルティを割り当てることができる。可能な車両混雑、騒音及び/または汚染によって車両道路の横に有向エッジにペナルティが割り当てられることができ、これは全体のウォーキングツアーに対する上記有向エッジの価値を減少させることになる。
【0094】
ツアー生成方法は、観光関心地域に沿って、またはその付近に位置されたOSMデータから抽出された、有向エッジに報酬を割り当てる。観光関心地域の例としては、芸術作品(OSMデータから:"Tourism=artwork")、宗教的建築物(OSMデータから:"amenity=place of_worship")及びアーキテクチャ名所(OSMデータから:"historic=*")、及び都市内の集結場所(例えば、広場)を含む。
【0095】
連続的な有向エッジのそれぞれのペアに対して、ツアー生成方法は、また、追加のペナルティ項目を計算して経路セグメントスコアに追加する。追加ペナルティ項目は、turn(e
ie
i+1)で表示されることができ、急カーブを有するツアーにペナルティを与えるように、2つの連続する有向エッジに対応するマップ上の2つの経路の間の実際の角度の関数として計算されることができる。したがって、追加ペナルティ項目は、ウォーキングツアーが複雑な幾何学的形状を有することを防止することができる。例えば、予め決められた角度(例えば、90度)よりも大きいクロス角を有する2つの経路にペナルティが付与されることができる。予め決められた角度よりも小さいクロス角を有する2つの経路には、ペナルティが付与されないことができる。
【0096】
また、ツアー生成方法は、経路セグメントに対する2つのペナルティ項目を計算することができる。これら2つのペナルティ項目は、有向エッジに対してev
penalty(e)として表示されることができ、ノードに対してnv
penalty(n)として表示されることができる。ツアー生成方法は、ウォーキングツアーを歩く歩行者によって与えられた、有向エッジまたは与えられたノードが横断される回数の関数として、2つのペナルティの項目を決定することができる。したがって、これらの2つのペナルティ項目は、ウォーキングツアー中にウォーキングツアーが同一経路セグメント及び/またはノードを2回以上横断するのを防止するように助ける。
【0097】
ツアー生成方法は、下記の式を使用して、有向エッジe
iで構成された与えられた経路セグメントp(例えば、ルート)の経路セグメントスコアを決定することができる:
【0098】
【数1】
ここで、スコアは、経路セグメントpのスコアであり、μ及びγは、ウォーキングツアーに対するユーザー選好度に合うように適応された乗算引数である。様々な具現において、上記提示された例の代わりに、またはそれに加えて、他の報酬及びペナルティが追加で考慮されることができる。例えば、ツアー生成方法は、ユーザー選好度に対するルート(またはループ)の形状及び/またはツアーの幾何学的単純性に基づいて、報酬またはペナルティを決定し追加することができる。追加的にまたは代案的に、ツアー生成方法は、複数の連続的な良好な有向エッジを含むシーケンスを有するルートに基づいて、報酬を決定し追加することができる。この例示において、良好な有向エッジは、予め決定された値(しきい値)よりも大きい加重値を有する有向エッジを含むことができる。
【0099】
第1の方法(グリーディアプローチ(Greedy approach))
例示として前述した経路セグメントスコアの計算を使用して、第1のループ経路が以下のように生成されることができる。
【0100】
図2は、循環型ウォーキングツアーを生成する(第1の)例示的な方法を図示したフローチャートを含む。
図2に例示されたアルゴリズムは、快適な循環型ウォーキングツアーを生成する方法である。方法は、1つ以上のプロセッサ(61a〜61c)のような1つ以上のプロセッサによって遂行されることができる。方法は、目標開始位置から開始して、目標距離(ユーザー選好度によって定義される)が到達するまでツアーに新しい有向エッジを反復的に追加する。
【0101】
101において、ユーザーデバイス(14)のデータプロセッサ(61b)は、サーバー(55)と通信して、ウォーキングツアーが開始して終了される目標開始位置周辺領域の与えられたマップに対するOSMマップデータを取得する。データプロセッサ(61b)は、また、入力として、ユーザーの選好度(つまり、ユーザー選好度)を表す変数のセットを検索する。
【0102】
ユーザー選好度は、例えば、循環型ツアーの目標距離(distMax)、及び他のパラメータ、例えば、ユーザーの選好類型の経路、循環型ツアーに沿って見ることのできる希望関心地域または位置(例えば、風景)、公園及び風景に対する希望近接性を示す希望経路類型(例えば、徒歩型または居住型)を含む。ユーザー選好度は、また、循環型ウォーキングツアーの目標高度プロファイルを含むことができる。目標高度プロファイルは、例えば、循環型ウォーキングツアーに対する傾き(または傾斜度)及び/または全体獲得高度を含むことができる。
【0103】
ユーザー選好度は、ユーザー(80)がユーザー選好度を入力するために相互作用するユーザーデバイス(14)のユーザーインターフェースを通じて、リアルタイムで取得されることができる。追加的にまたは代案的に、ユーザー選好度は、ユーザーデバイス(14)のメモリ(72b)からデータプロセッサ(61b)によって検索されることができる。
【0104】
102において、循環型ツアーに対する現在ノードは目標開始位置(p
start)に対応する値に初期化され、ツアーはシングルトン(singleton){p
start}に初期化され、ツアーの長さcurrent_costは0に初期化される。
【0105】
103において、ツアーの長さ(current_cost)が目標の長さよりも小さいか否かを判定する。ツアーの長さが予め決定された量だけ目標の長さよりも小さく、もしくは大きくなるように、予め決定された値が目標の長さにまた適用されることもできる。多様な具現において、予め決定された値は、ツアーの長さが目標の長さの±10%になるように1.1であることができる。103が偽であれば、ツアーは完成され、制御は105に移動する。103が真であれば、下記のステップが反復される:
-104において、距離(d)(例えば、任意の距離)は、パラメータ(θ)のセットを有する確率分布(P(d|θ))から導出される。
【0106】
-106において、現在ノードからおおよそ距離(d)内にある(例えば、d±200m)すべてのノードを含む交差点のセット(C)が生成される。
【0107】
-107において、交差点のセット(C)が空いているか否かを判定する。107が真であれば、108において、方法は分布のパラメータ(θ)を変更するステップ及び新しい距離(d)を導出するように104に戻るステップを含む。107が偽であれば、方法は109に続く。
【0108】
-109において、方法は、セット(C)のそれぞれの交差点(p
iに表記される)に対して反復するステップ及び下記のテストを遂行するステップを含む:
-110において、経路セグメントの最後のノードから交差点(p
i)までの最短経路セグメントが現在のツアーに追加されると、ツアーの合計長さとp
iからp
startまでの最短経路セグメントの長さの合計がツアーの目標の長さ(distMax)以下であるかを検証する。そうでない場合には、交差点のセット(C)からp
iを除去する。
【0109】
-111において、方法は、p
startからセット(C)のそれぞれのp
iまでの関連する経路セグメントのスコアに基づいて交差点のセット(C)を整列するステップを含む。
【0110】
-112において、方法は、セット(C)の最適交差点または以前の整列によるセット(C)のk個の最適道路交差点から(例えば、ランダムに)選択されてルートに追加された交差点を選択するステップを含み、現在ノードから選択されたノードへの最短経路セグメントは、現在のツアーに追加され、この経路セグメントの長さは、ツアーの長さ(current_cost)に追加され、現在ノードは、この選択されたノードにアップデートされる。続いて、制御は103に戻って反復される。
【0111】
-105において、方法は、完成された循環型ウォーキングツアーを出力するステップを含む。例えば、完成されたツアーは、ユーザーデバイス(14)のユーザーインターフェース上に表示されることができる。循環型ツアーが遠隔で生成される場合、循環型ツアーはまた、ユーザーデバイス(14)に通信される。
【0112】
図3は、
図2の方法によって生成された例示的な10キロメートル(km)循環型ツアーの例示的なマップを含む。このようなマップは、ユーザーデバイス(14)のディスプレイ上に表示されることができる。ユーザーデバイス(14)の現在位置は、また、ユーザーデバイス(14)上に同時に表示されることができる。ユーザーデバイス(14)は、また、ユーザーデバイス(14)がツアーを横断することによって、ツアーに付いて行く方向を提供することができる。
図2の方法(100)は、下記の擬似コード(pseudocode)を使用して説明されることができる。
GreedySP(100):
ユーザー選好度とマップを示すグラフG=V、A)を入力として取る(101)
current_node<-starting_point(102)
while current_cost<1.1*distMax:(103)
1)P(d|θ)(例えば、ガンマ分布から)からdを導出(104)
2)distance(current_node、p)=d±200mとなるように、ノード(p)のセットに対する加重された最短経路セグメントを計算(106)
3)ノードのセットが空いている場合、θをアップデートして平均距離を減らし、距離(d)を再導出する(107、108)
4)ノード(p)のそれぞれに対して:(109)
i)最短経路セグメントのスコアを計算:score(path(p))
ii)pに行く場合、total distanceMaxを超えずに開始点に戻ることができるかを確認(110)
iii)距離及び/または角度に基づいて、pに行く経路セグメントと既に完成された経路セグメントの間の所定ペナルティまたは距離を計算(111)
5)Criteria(p)<-score(path(p))+αpenalty(path(p))
6)整列して、可能であればリストの最上位を無作為化し、1つのノード(p')を選択
7)current_node<-p'(112)
8)current_cost+=cost(path(p))(112)
final score(path(p))を計算、
結果経路セグメントを後処理して不要な有向エッジを除去し、さらに最適化する。(105)
第2の方法(ダイナミックアークオリエンテーリング(orienteering))
以下において、SP(A、B)は、グラフ内でノード(A)からノード(B)までの最短経路セグメントを示す。
図4は、循環型ウォーキングツアーを生成する例示的な(第2の)方法を図示したフローチャートを含む。方法は、1つ以上のプロセッサ(61a〜61c)のような1つ以上のプロセッサによって遂行されることができる。
【0113】
方法(200)は、例えば、前述した
図2の例示に基づいて初期循環型ツアーが取得される201から開始する。
【0114】
1つ以上のプロセッサは、ツアーを最適化するために利用可能なプロセッシング時間(202)に基づいて与えられた反復回数(現在の反復がiで表示される)に対して反復される下記のステップを遂行する:
-203において、ツアー内の連続アーク(有向エッジ)(AB、EF)のそれぞれのペアに対して反復する:
-204において、BからEへの連結経路を{SP(B、C)、CD、SP(D、E)}に代替するために、ツアーに対する新しいアーク(有向エッジ)(CD)の可能なすべての挿入を列挙することによって、実現可能な新しいツアーのリストを生成(ステップ204);
-205において、列挙された実現可能な新しいツアーの中で、それらのスコアによって最適なツアーを選択するか、最適なk個のツアーのうち1つを(例えば、ランダムに)選択し、
-206において、現在の反復により、ツアーからアーク(有向エッジ)の与えられた数(N(i))のサブセットを選択することによって、新しいルート(ユーザー選好度を増進させるスコアを有する)を定義し、これはアルゴリズムの次の反復に対して固定される。
【0115】
-方法は、207において、完成された循環型ウォーキングツアーを出力するステップを含む。例えば、完成されたツアーは、ユーザーデバイス(14)のユーザーインターフェース上に表示されることができる。循環型ツアーが遠隔で生成される場合、循環型ツアーはまた、ユーザーデバイス(14)に通信される。
【0116】
図5は、
図4の方法によって生成された例示的な7km循環型ツアーの例示的なマップを含む。このようなマップは、ユーザーデバイス(14)のディスプレイ上に表示されることができる。ユーザーデバイス(14)の現在位置は、また、ユーザーデバイス(14)上に同時に表示されることができる。ユーザーデバイス(14)は、また、ユーザーデバイス(14)がツアーを横断することによって、ツアーに付いて行く方向を提供することができる。
図4の方法(200)は、下記の擬似コードを使用して説明されることができる。
ダイナミックアークオリエンテーリング(200):
初期実現可能な経路セグメントを入力として取得(201)
それぞれの反復iに対して:(202)
-ルート内の連続的な(しかし、必ずしも隣接する必要はない)アーク(AB及びEF)のそれぞれのペアに対して:(203)
BからEへの連結経路をシーケンスSP(B、C)、CD、SP(D、E)によって定義された経路セグメントに代替し、新しいアーク(CD)をルートに挿入することができる可能性を探索(204)
-実現可能な新しいツアー(つまり、どのノードも2回以上訪問されず、総距離がDmaxより小さいツアー)の中で、最高のスコアを有するk個のツアーのうち1つをランダムに選択(205)
-最高のスコアを有するか、または現在のツアーからランダムにサンプリングされたN(i)個のアークを選択して、ルートをアップデート(206)
-最大反復回数に達する場合、またはそれ以上挿入が可能でない場合、中止して現在のツアーを返還(207)
反復(I)で固定されたツアーのアークまたはエッジの数を表す関数N(i)及び/またはアークを選択する方式を定義するために、他の戦略が使用されることができる。ツアーがとても良好だったが、最短経路セグメントの一部であるアークを含む場合、これらは以降の挿入によって廃棄されることができる。方法は、以前に訪問したアークのうち、最も良いアークを維持した状態で拡張が完成されるように、ルートアークを動的に固定することができる。しかし、最適のアークを選択することは、局所最小値(local minimum)につながることができる。これが発生するのを防止するために、方法は、それぞれの反復ごとにアークをランダムに選択して、生成されたツアーを向上させることができる。
【0117】
後処理
図6は、
図2の例示または
図4の例示から生成されるツアーのような完成されたツアーに対して遂行されることができる、後処理の例示的な方法(300)を図示するフローチャートを含む。方法(300)は、1つ以上のプロセッサ(61a〜61c)のような1つ以上のプロセッサによって遂行されることができる。
【0118】
301において、方法は、前述されたように生成された循環型ツアーを入力データとして受信する。ツアーの形状を改善するために、下記のステップがツアーで遂行される:
-302において、方法は、下記の手続きを適用してツアーのノード(A)からノード(B)までのそれぞれの経路セグメントに対して反復する。
【0119】
303において、ツアーでAからBまでの経路セグメントとAからBまでの最短経路セグメントを比較する。経路セグメントが最短経路セグメントよりはるかに長い場合には、その経路セグメントを迂回として考慮し、経路セグメントに対するスコアが良い場合にのみ、その経路セグメントを関心対象として考慮する。この場合、経路セグメントのスコア/長さの比は、
図6に図示されたように、最短経路セグメント及びそれの最大スコアと比較される;
以前の比較により、経路セグメントが迂回として見える場合は、304において、AからBまでの経路セグメントをAとBの間の最短経路セグメントに代替する。例えば、304は、経路セグメントの長さが最短経路セグメントの長さの2倍よりも長く、経路セグメントのスコアが予め決定された値(例えば、0.5)*経路セグメントのすべてのアークの(累積)スコア*経路セグメントのアークの数より小さく、最短経路セグメントのスコアを最短経路セグメントの長さ(コスト)で割った値が、第2の予め決定された値(例えば、0.3)*経路セグメントの(累積)スコアを経路セグメントの長さ(コスト)で割った値より大きい場合には、AからBまでの経路セグメントをAとBの間の最短経路セグメントに代替することができる。
【0120】
-それぞれの経路セグメントが評価されると、ツアーは完成され、この手続きの終わりで取得された、完成されたツアーは、305においてユーザーに出力される。例えば、完成されたツアーは、ユーザーデバイス(14)のユーザーインターフェース上に表示されることができる。循環型ツアーが遠隔で生成される場合には、循環型ツアーは、また、ユーザーデバイス(14)に通信される。
【0121】
303及び304は、下記の論理テストで公式化できる。
仮に(length(SEG)>2*length(SP))であり、
(score(SEG)<0.5*(max_score(SEG)*nb_arcs(SEG)))であり、
(sp_score/sp_cost>=0.3*seg_score/seg_cost)である場合、
SEGをSPに代替する
後処理は、ただ目標距離を達成するために、一部アーティファクトと迂回のような人工迂回を除去することができる。これはツアーの他の部分に再投資されることができるコスト(距離)を節約し、ツアーの全体価値を高めることになる。1つのオプションは、良いスコアを有するツアー(例えば、セグメント)を貪欲に(greedily)拡張することである。例えば、前述されたグリーディアプローチを適用することによって、1つのオプションは、短縮ルートに対してダイナミックアークオリエンテーリングアプローチを再実行してルートを拡張し、スコアを最大化することである。
【0122】
多様な具現において、1つ以上のプロセッサは、複数の解決(ツアー)を並列に生成することができる。多数のツアーのうち、1つ以上のツアーがユーザーデバイス(14)を通じてユーザーに提示されることができる。しかし、提案された経路セグメントのセットの多様性を増進させるために代案的な後処理が遂行されることができる。例えば、最大限界関連性(Maximum Marginal Relevance)技術が使用されることができる。多様な具現において、1つ以上のプロセッサは、最高スコアを有する循環型ツアーの中で、最適の幾何学的形態または形状を有するツアーを選択することができる。例えば、1つ以上のプロセッサは、循環型ツアーによって限定された表面を比較することによって、最も大きい多角形を形成する循環型ツアーを選択すること、または交差地点の数を比較することによって最も簡単な多角形を選択することができる。
【0123】
高度
1つ以上のプロセッサは、例えば、ユーザー選好度に含まれた高度目標を達成するために、高度データにさらに基づいてツアーを生成することができる。これに関連し、1つ以上のプロセッサは、グラフ内のすべてのアークに対する高度データを取得することができる。1つ以上のプロセッサは、OSM及び/または高度データベースのような他の適切なデータベースから高度データを得ることができる。
【0124】
ルーティンググラフ(routing graph)のすべての交差点またはノードの高度のような漏れた高度データを得るために、トポロジデータベースが使用されることができる。例えば、高度データは、API(application programming interface)を使用してサーバー(60)から取得されることができる。サーバー(60)は、例えば、予め決定された領域(例えば、25メートルx25メートル)の四角形で構成された、DEM(digital elevation model)規格を遵守するデジタル標高モデル(DEM)に基づいて高度データを提供するトポロジデータベースを含むことができる。
【0125】
ツアーを生成するとき、このような精度のレベルは低すぎることがある。それぞれのノードに対して該当する位置にある四角形の平均高さを使用すると、短い長さ(例えば、数メートル)の様々なノードを連結するアークでツアーが生成されることができる。選択された経路セグメントの各々は、四角形のうち1つの四角形内に位置することができるので、完全に平らなものとして、または両四角形の境界に位置するものとして誤って推定されることができ、両四角形が異なる平均高度値を有する場合、急すぎるものとして誤って推定されることができる。
【0126】
1つ以上のプロセッサ(例えば、ユーザーデバイス(14)のプロセッサ(61b))は、例えば、4つの最近接四角形の高度データから逆距離加重を使用して、ノードのそれぞれの高度を推定する。グリッドのそれぞれの四角形は、その中央の位置に表現されることができる。1つ以上のプロセッサは、それぞれのノードの高度を4つの最近接周辺中心位置の高度の加重合計で決定する。この合計において、ノードが中心位置に近いほど、合計の計算に及ぼす影響または加重値が高くなる。
【0127】
合計の加重値は、ノードと重心位置の間の距離の逆数に比例する:
【0128】
【数2】
ここで、Sは高度が決定されるべき位置であり、S
iは知られた高度を有する位置、
【0129】
【数3】
は位置xでの高度であり、
【数4】
はp-normを表し、nは考慮された最近接周辺中心位置の数である。特に、本方法は、p=1及びn=4のとき、合理的な結果を提供する。
【0130】
高度プロファイル選好度
高度は、獲得高度及び傾斜度(または傾き)の2つの態様を含む。獲得高度と傾斜度の両方ともにツアーの難易度に影響を及ぼす。獲得高度は、全体のツアーの総累積獲得高度、すなわち、連続セグメントの獲得高度の合計である。ツアーの獲得高度は、ツアーの難易度の尺度であることができる。傾斜度は、ツアーの最も急な部分と関連して表現されることができる。
【0131】
ウォーキング(またはハイキング)において、ネイスミスのルール(Naismith's rule)は、歩き(上り坂)において高度が及ぼす影響を定義することができる。獲得高度によって引き起こされる追加の努力は、ルートに/ルートから距離を足したり引いたりすることに変換されることができる。時間と努力の観点から、100メートル(m)の高さの差(D+)は、水平に1kmを走るのと同じである。例えば、300mのD+を有して10kmを走るのは、13kmを水平に走るのと同じである。
【0132】
獲得高度は、速力にも影響を及ぼす。例えば、上向傾斜(上り坂)の傾きパーセントごとに歩行者の速度をキロメートル当たり7〜9秒ずつ遅らせることができる。下向傾斜(下り坂)の傾きパーセントごとに歩行者の速度をキロメートル当たり5秒ずつ高めることができる。
【0133】
ユーザー選好度は、例えば、3つの連続分類または難易度レベルである平地、丘及び高山(alphine)のうち1つのような、高度プロファイルのセットのうち1つを含むことができる。高度プロファイルのそれぞれは、ツアーに対して互いに異なる許容可能な範囲の累積獲得高度及び傾斜度に対応する。例えば、高度プロファイルは:(1)例えば、累積獲得高度が距離の1%未満(例えば、10kmに対して100m未満)であり、最大傾斜度は5%である、第1の(例えば、平地)プロファイル;(2)例えば、累積獲得高度が距離の1%と3%の間(例えば、10kmに対して100〜300m)であり、最大傾斜度は10%である第2の(例えば、丘)プロファイル;及び(3)例えば、累積獲得高度が距離の3%超(例えば、10kmに対して300m超)であり、最大傾斜度は15%である第3の(例えば、高山)プロファイルであることができる。第2のプロファイルの累積獲得高度及び最大傾斜度は、第1のプロファイルの累積獲得高度及び最大傾斜度より大きい。第3のプロファイルの累積獲得高度及び最大傾斜度は、第2のプロファイルの累積獲得高度及び最大傾斜度より大きい。
【0134】
3つの高度プロファイルの例示が提供されるが、可能な高度プロファイルの数は3、もしくは3より大きいことや、3より小さいことができる。高度プロファイルは、予め決定されることができ、高度プロファイルの1つ以上の属性(例えば、累積獲得高度及び/または最大傾斜度)は、ユーザーデバイス(14)に対するユーザー入力に基づいて調整されることができる。
【0135】
多様な具現において、高度データは、また、目標インターバル(期間)を含むことができる。獲得高度を経験する目標インターバルは、ユーザー入力であることができ、また、予め決定された目標インターバルが高度プロファイルと関連させることができる。
【0136】
傾斜度の場合、一致させるべき全体目標傾斜度は定義されないことができる。代わりに、避けるべき傾斜度の値を含むのが有利であることができる。1つ以上のプロセッサが常に同じ許容可能な傾斜度を有するツアーを生成するわけではないことができる。代わりに、1つ以上のプロセッサは、プロファイルと関連する最大傾斜度に制限される傾斜度を有するかもしくは有さないことができる平らで急なセグメントを含むツアーを生成するように構成されることができる。獲得高度目標は全体ツアーに適用される一方(これが、それぞれのセグメントの獲得高度の合計で構成されるため)、傾斜度制限条件はツアーのほとんどのセグメントに適用されることができるが、必ずしもツアーのすべてのセグメントに適用される必要はない。例えば、セグメントが歩行者にとってツアー内でとても快適な地域または経路に到達できるようにしてくれれば、一部のユーザーは、ツアー内の非常に短い急なセグメントを含むツアーを選好し、受諾することができる。
【0137】
ツアー生成方法は、高度プロファイルと関連する最大傾斜度よりも大きい傾斜度を有するセグメントを排除しないことができる。代わりに、ツアー生成方法は、単に非常に急なセグメントにペナルティを付与することができる。他の例示において、ツアー生成方法は、ツアーに過度に多くの難しいセグメントを含むことを避けるために、最大傾斜度を超える後続セグメントの累積長さを制限することができる。
【0138】
与えられた総距離に対する平地プロファイルを利用して全体獲得高度が既に制限されている点で、獲得高度はすでに傾斜度に対する自然的な限界を提供する。したがって、生成されたツアーは、高い傾斜度を少ない比率または累積距離のみで含むことができ、また、より低い傾斜度をより高い比率または累積距離のみで含むことができる。
【0139】
高度プロファイルに基づいたツアー生成
1つ以上のプロセッサは、例えば、獲得高度及び/または最大傾斜度制限条件を具現することによって、選択された高度プロファイル及びユーザー選好度を満足するツアーを生成することができる。
【0140】
例えば、傾斜度制限条件を施行するために、1つ以上のプロセッサは、ペナルティを決定し、ユーザー選好度の高度プロファイルと関連する予め決定された最大傾斜度より大きい傾斜度を有する経路セグメントの経路セグメントスコアにペナルティを追加することができる。1つ以上のプロセッサは、予め決定された最大傾斜度よりも小さい傾斜度を有する経路セグメントの経路セグメントスコアにペナルティを追加しないことができる。
【0141】
目標獲得高度を達成するために、1つ以上のプロセッサは、下記のように(1)及び(2)のうち一方または両方を遂行することができる:
-(1)(A)現在のソリューションが目標獲得高度を達成するときまで、獲得高度を第1の目標として考慮し、快適度スコア(前述済み)を第2の目標として考慮する階層的最適化(hierarchical optimization)を適用する。(B)獲得高度が目標範囲にあるとき、高度範囲を制限条件に維持しながら、快適度を最大化する。
-(2)中間点を探す。適切な高度に位置された中間点を選択する(例えば、全体グラフの平均高度+/-予め決定された量)。この中間点で、開始点から中間点までの経路セグメントを含むツアー生成を開始する。
【0142】
急な経路セグメントに対して追加されたペナルティは、最大傾斜度を制限するために使用される。しかし、最大傾斜度より大きい傾斜度を有するセグメントが常にツアーから除外されるようにペナルティが設定されることができる。与えられた目的地に到達するために急な直接経路を選択するのを避けるために、ユーザーは、より多くの距離をカバーするが、急なセグメントは避ける迂回をすることを受諾することができる。追加されたペナルティを含む加重された最短経路セグメントは、この選好度を具現することができる。
【0143】
したがって、ツアー生成方法は、急な経路セグメントにペナルティを付与することができる。ペナルティは、経路セグメントの傾斜度が高度プロファイルの最大傾斜度と同じ時に追加されはじめることができ、傾斜度が最大傾斜度を超過して増加するにつれて増加することができる。
【0144】
図7は、ペナルティ計算の例示的な方法(400)を図示したフローチャートを含む。
【0145】
401において、1つ以上のプロセッサは、ユーザー選好度、そしてより詳細には、高度プロファイルを検索する。1つ以上のプロセッサは、高度プロファイルが第1の(平地)プロファイル、第2の(丘)プロファイルまたは第3の(高山)プロファイルであるかを決定する。高度プロファイルが第1の(平地)プロファイルに設定される場合、方法は、402fに継続される。高度プロファイルが第2の(丘)プロファイルに設定される場合、方法は、402hに継続される。高度プロファイルが第3の(高山)プロファイルに設定される場合、方法は、402aに継続される。
【0146】
高度プロファイルが第1のプロファイルに設定される場合、402fにおいて、1つ以上のプロセッサは、経路セグメントの傾斜度(例えば、傾斜度の絶対値(abs))が第1のプロファイルと関連する予め決定された最大傾斜度(例えば、5%)より小さいか否かを決定する。402fが偽であれば、1つ以上のプロセッサは403fにおいて、経路セグメントに対するペナルティを20×(abs(steepness)-0.05)に基づいて、またはそれと同一に設定することができる。402fが真であれば、1つ以上のプロセッサは404において、セグメントに対するペナルティを0に基づいて、またはそれと同一に設定することができる。
【0147】
高度プロファイルが第2の(丘)プロファイルに設定される場合、402hにおいて、1つ以上のプロセッサは、経路セグメントの傾斜度(例えば、傾斜度の絶対値(abs))が第2のプロファイルと関連する予め決定された最大傾斜度(例えば、10%)より小さいか否かを決定する。402hが偽であれば、1つ以上のプロセッサは403hにおいて、経路セグメントに対するペナルティを(abs(steepness)-0.10)に基づいて、またはそれと同一に設定することができる。402hが真であれば、1つ以上のプロセッサは404において、セグメントに対するペナルティを0に基づいて、またはそれと同一に設定することができる。
【0148】
高度プロファイルが第3の(高山)プロファイルに設定される場合、402aにおいて、1つ以上のプロセッサは、経路セグメントの傾斜度(例えば、傾斜度の絶対値(abs))が第3のプロファイルと関連する予め決定された最大傾斜度(例えば、20%)より小さいか否かを決定する。402aが偽であれば、1つ以上のプロセッサは403aにおいて、経路セグメントに対するペナルティを20×(abs(steepness)-0.05)に基づいて、またはそれと同一に設定することができる。402aが真であれば、1つ以上のプロセッサは404において、セグメントに対するペナルティを0に基づいて、またはそれと同一に設定することができる。
【0149】
最短経路セグメントの計算のために、それぞれのアークの加重値は、下記に基づいて、または下記のように修正される:
Weight=distance×(1+penalty)
上記式の例示において、1の因数だけペナルティを増加させることは、急なセグメントを避けるために許容される距離をそのセグメントの長さだけ増加させることと同一である。例えば、第1のプロファイルが選択される場合、15%の傾斜度及び長さ(d)を有する経路セグメントにペナルティが付与されて、アルゴリズムは、15%の傾斜度を有する経路セグメントよりも最大3倍より長い(平地)経路を選択することを好むはずである。
【0150】
加重値が計算されると、1つ以上のプロセッサは、階層的最適化を遂行することができ、これは経路セグメントスコアを最大化する前に達成する第1の目標が獲得高度になるようにする。これはそれぞれの反復において、選択された挿入(経路セグメント)が累積獲得高度を維持することや、累積獲得高度を目標獲得高度により近く移動させることであることを意味することができる。挿入(ツアーへの追加)のための複数の可能な経路のセグメントが累積獲得高度に同じ影響を及ぼす場合、1つ以上のプロセッサは、複数の可能な経路セグメントのうち、経路セグメントスコアを最大化する1つを選択する。一度ツアーの獲得高度が目標獲得高度の予め決定された範囲内にあれば、1つ以上のプロセッサは、累積獲得高度を予め決められた目標獲得高度の範囲に依然として維持しながら経路セグメントスコアを最大化するための、挿入すべき以後経路セグメントを選択する。
【0151】
しかし、適切な高度の地域が十分近くにないと、階層的最適化は、目標高度プロファイルを達成できないことができる。より正確には、上述したように、互いにカットオフ距離(cutoff distance)内にある地点を連結する前処理された加重された最短経路セグメントが使用される。それぞれの反復において新しい挿入を考慮するとき、可能性の数は、ツアーに最短経路セグメントで連結されたアークの数に依存する。したがって、カットオフ距離が大きいほど、より多くの代案が可能であり、累積獲得高度を目標獲得高度に調整する経路セグメントを探す可能性が高くなる。
【0152】
図8は、同一なユーザー選好度を使用するが、最短経路セグメントの前処理において異なるカットオフ距離を使用して生成された2つのツアーの例示を図示する。青色線で図示されたツアーは、赤色線で表示された経路よりも大きいカットオフ距離を使用して生成されたものである。より大きいカットオフ距離(青色線で表示される)で生成されたツアーは、目標獲得高度の予め決定された範囲内にある獲得高度を提供し、ツアーは相対的に良いスコアを有する。しかし、より小さいカットオフ距離(赤色線で表示される)で生成されたツアーは、目標獲得高度の予め決定された範囲内にある獲得高度を提供しない。代わりに、より小さいカットオフ距離を有するツアーは、複数のより小さいアークを含んで獲得高度がほとんどない。このようなツアーは、ユーザー選好度の獲得高度部分を満たさずに、比較的不十分な(poor)幾何学的形状を有する。したがって、このようなツアーは、より大きいカットオフ距離を使用して生成されたツアーよりも低いスコアを有することになる。
【0153】
しかし、カットオフ距離が大きいほど遂行される前処理が大きくなる。適切な最小高度にある中間点の選択と開始点から該当地点に到達するための最短経路セグメントを含むようにツアーを生成するのは、より望ましいツアーを提供することができ、これはまた、目標獲得高度を達成する。
図9は、前述されたように、中間点を選択することによって生成されたツアーを含む例示的なグラフを含む。この場合、ツアーは、開始点と中間点の間の同じアクセス経路で始まり、終わるようになる。
【0154】
柔軟な経路
1つ以上のプロセッサは、ユーザーが、ユーザーデバイス(14)を持って生成されたツアーを横断する間、1つ以上の変更が行われるように許容することができる。例えば、1つ以上のプロセッサは、ツアーの間にツアーの長さを増加させたりツアーの長さを減少させるための、ユーザーデバイス(14)に対するユーザー入力に応答して、ツアーの長さを増加させたりツアーの長さを減少させるためにツアー(例えば、持続時間及び/または距離)を調整することができる。追加的または代案的に、1つ以上のプロセッサは、ユーザーがツアーから逸脱して代案的なツアーに付いて行く場合、代案的なツアーの経路に付いて行くようにツアーを調整することができる。付加的または代替的に、1つ以上のプロセッサは、ツアーの間にユーザーデバイス(14)に対するユーザー入力、例えば、緊急事態の表示に応答してユーザーに開始位置に戻ることが可能な最短ルートを提供するようにツアーを調整することができる。
【0155】
1つ以上のプロセッサは、ユーザーが、ユーザーデバイス(14)を持って生成されたツアーを横断する間、1つ以上の変更を提案する時に地理的柔軟性及び時間柔軟性を許容する。地理的柔軟性は、1つ以上のプロセッサが、ユーザー選好度と一致し、元のツアーの経路と(スコア的に)ほぼ同じ品質である初期ツアー周辺の領域及び/または代案の経路を識別するのを伴うことができる。領域及び/または代案の経路は、ユーザーが元のツアーを厳密に付いて行かずに周辺を探索するように許容することができる。時間柔軟性は、ツアーの間にツアーの長さ及び/または全体期間(時間)の変化に関するユーザー入力に応答してツアーを調整することを伴うことができる。1つ以上のプロセッサは、ツアーの間に要請されたそのような変更に応答してツアーの長さを増加させるために、またはツアーの長さを減少させるためにツアーをアップデートする。これは、例えば、天気の変化に基づいて、またはツアーの間にユーザーの気持ち(例えば、疲労またはエネルギー)に基づいた柔軟性を許容する。
【0156】
生成された(最初の)ツアーをより柔軟にするために、1つ以上のプロセッサは、ツアーから分岐され、最初のツアーの経路セグメントを代替するために使用されることができる1つ以上の代案経路(アーク)を決定する。可能なすべての代案経路のうち、1つ以上のプロセッサは、最初のツアーから除去された経路セグメントのスコアと類似するスコアを有する代案経路を選択する。
【0157】
上述されたように、1つ以上のプロセッサは、それの平均スコア、すなわちそれの距離に対するそれのスコアに基づいて、経路のスコアを決定する。1つ以上のプロセッサは、経路の総スコアをその総距離で割ることによって、それぞれの経路の平均スコアを個別化(discretize)する。1つ以上のプロセッサは、スコアに基づいて、それぞれの経路に品質カテゴリーを割り当てる。例えば、1つ以上のプロセッサは、予め決定された第1のスコアの範囲内にあるスコアを有する経路に第1の品質カテゴリーを割り当て、予め決定された第2のスコアの範囲内にあるスコアを有する経路に第2の品質カテゴリーを割り当て、予め決定された第3のスコアの範囲内にあるスコアを有する経路に第3の品質カテゴリーを割り当て、及び予め決定された第4のスコアの範囲内にあるスコアを有する経路に第4の品質カテゴリーを割り当てることができる。4つの品質カテゴリーの例示が提供されるが、より多いもしくは少ない数の品質カテゴリーが使用されることができる。第1の品質カテゴリーは、最小品質を有する経路(例えば、車両通行がある道路)に対応することができる。第2の品質カテゴリーは、合理的な品質、第1の品質カテゴリーの経路よりも良い品質を有する経路(例えば、徒歩経路)に対応することができる。第3の品質カテゴリーは、良い品質、第2の品質カテゴリーの経路よりも良い品質を有する経路(例えば、公園の境界などのような自然に近い徒歩経路)に対応することができる。第4の品質カテゴリーは、優れた品質、第3の品質カテゴリーの経路よりも良い品質を有する経路(例えば、公園内の徒歩経路または自然を通過する徒歩経路)に対応することができる。
図10は、スコアに応じてセグメント化された例示的なウォーキングツアーを含む。品質カテゴリーの例示が提供されるが、本出願はまた、柔軟な経路を識別する他の方法にも適用可能である。
【0158】
1つ以上のプロセッサは、(1)代案経路に代替することができる最初のツアーの一部を選択し、(2)最初のツアーの一部を代替する許容可能な代替を探すことによって経路のスコアを決定する。
【0159】
1つ以上のプロセッサは、(1)スライディングウィンドウアプローチまたはセグメント化アプローチを使用して、最初のツアーの代替される一部を選択することができる。スライディングウィンドウアプローチの場合、1つ以上のプロセッサは、固定された予め決定された距離(D)を有するスライディングウィンドウを定義する。1つ以上のプロセッサは、最初のツアーの第1のノード(開始位置)から開始して、元のツアーの後続ノードを通じてウィンドウをノードからノードへ移動させる。それぞれのステップにおいて、1つ以上のプロセッサは、距離(D)内に置かれていてツアーの終了ノード(終了位置)前にあるツアーのすべての後続ノードをカバーするために、次のノードを開始ノードとしてスライディングウィンドウを移動させる。それぞれのステップにおいて、1つ以上のプロセッサは、スライディングウィンドウの第1のノード(N0)とスライディングウィンドウ内のそれぞれの後続ノード(Ni)との間の周辺領域内の可能な挿入を決定する。
【0160】
セグメント化アプローチの場合、1つ以上のプロセッサは、最初のツアーをその構成アークのスコアに基づいてセグメント化する。言い換えると、1つ以上のプロセッサは、スコアの観点から類似する最初のツアーの分離された(disjointed)サブシーケンスを識別する。1つ以上のプロセッサは、例えば、rupture 1 python libraryからのアルゴリズムのような、セグメントを検出するための変更点(change point)アルゴリズムを使用して、上述された4つの品質カテゴリーに応じてスコアを個別化することができる。
図10は、例示的なセグメントにセグメント化されたツアーを含む例示的なグラフを含む。マーカーは、それぞれのセグメントの始まりと終了を示す一方、色は、セグメントの品質(例えば、カテゴリー)を表す。最適(例えば、第4)のカテゴリーに属するセグメントは、緑色で図示され、最悪(例えば、第1)のカテゴリーに属するセグメントは、赤色で図示される。中間カテゴリー(例えば、第2または第3)に属するセグメントは、黄色のような他の色で図示されることができる。それぞれのセグメント内において、1つ以上のプロセッサは、セグメント内のノードの(例えば、それぞれの)ペアの間の可能な挿入を決定する。
【0161】
1つ以上のプロセッサは、(2)下記のように最初のツアーの代替される部分に対する許容可能な代替を識別することができる。それぞれのサブセクション(セグメント)は、代替されるノードのペアを連結する元のツアーの一部分を表すノード(N
start、N
end)のペアによって定義される。1つ以上のプロセッサは、可能な挿入が許容可能な代案であるか否かを決定するために可能な挿入の特性を検証する。それぞれの可能な挿入に対して、1つ以上のプロセッサは、可能な挿入を有する代案的なツアーがツアー内に任意の重複ノードを含まないように検証する。これはツアーの品質を向上させ、2つのノード間でツアーが前後で進行されることを防止する。1つ以上のプロセッサは、可能な挿入の品質カテゴリーを決定し、そのカテゴリーに基づいて、1つ以上のプロセッサは、最初のツアーに対する可能な挿入によって導入された平均スコア及び距離の変化に対する追加的な制限条件を検証することができる。可能な挿入がすべての追加的な制限条件を満たす場合に、1つ以上のプロセッサは、可能な挿入を可能な代案経路として維持する。代案経路の決定は、下記の擬似コードによって説明されることができる。
alternative_paths=[]
それぞれのノードのペア(N
start、N
end)に対して:
周辺グラフのそれぞれのアーク(a
1、a
2)に対して:
-最短経路(N
start、a
1)及び(a
2、N
end)を連結経路に使用してN
startとN
endの間にアーク(a
1、a
2)の挿入を決定する。結果的に挿入される経路(N
start、a
1)(a
1、a
2)(a
2、N
end)は、下記においてinserted_pathと称され、下記においてreplaced_pathと称される最初のツアー経路で(N
start、N
end)を連結する経路に対する可能な代替である。
【0162】
-replaced_pathをinserted_pathに代替する代案的なツアーは、任意の重複ノードを含まないように検証する。任意の重複ノードがあると、挿入を拒否する。
【0163】
-inserted_pathの品質のカテゴリーを決定する。例えば、前述されたように、inserted_pathに品質カテゴリー1、2、3または4のうち1つを割り当てる。
【0164】
-inserted_pathのカテゴリーに応じて、対応するcost_threshold及びscore_threshold(以下で説明される)を決定し、replaced_pathと比較してinserted_pathが下記の制限条件を満たすか否かを検証する:
Cost(inserted_path)≦cost_threshold*Cost(replaced_path)、及び
Score(inserted_path)/Cost(inserted_path)≧score_threshold*Score(replaced_path)/Cost(replaced_path)
inserted_pathが制限条件を満たさない場合、inserted_pathを拒否する。inserted_pathがすべての制限条件を満たす場合、最初のツアー内のreplaced_pathと比較して、それがコスト及びスコアの観点から導入する変更事項に関する情報と一緒にinserted_pathをalternative_pathsに追加する。
【0165】
経路のコストは、経路がカバーする距離及び経路の快適度(品質)に対するスコアに対応する。前述されたように、経路のコスト及び経路のスコアは、経路アークから計算される。score_threshold及びcost_thesholdsに関連する例示は、下記の通りである:
【0166】
【表1】
コスト及びスコアしきい値の例が提供されるが、他のしきい値が使用されることができる。
【0167】
図11〜
図14は、都市(都心地域)内の最初のツアー(
図11)のセグメント内に代案経路(青色)が挿入されて生成されたツアー(
図12〜
図14)の例示的なグラフを含む。
図15〜
図18は、住居地域内の最初のツアー(
図15)のセグメント内に代案経路(青色)が挿入されて生成されたツアー(
図16〜
図18)の例示的なグラフを含む。
図11〜
図18の例は、500〜1000mのウィンドウサイズと1000〜3000mのカットオフ値に基づいて生成された。
【0168】
1つ以上のプロセッサは、快適な代案経路を挿入する。挿入のスコアが高いほど、許容可能なコストの増加及び許容可能なスコアの減少の両方すべてに対する制限条件の遵守を決定するときのしきい値がより緩和されることができる。しきい値は、それぞれの品質カテゴリーと関連し固定された、予め決定された個別の値であることができる。多様な具現において、1つ以上のプロセッサは、例えば、平均スコアをコスト及びスコアのしきい値と関連させる関数及びルックアップテーブルのうち1つを使用して、しきい値を経路の平均スコアの関数として決定することができる。多様な具現において、1つ以上のプロセッサは、また、獲得高度及び/または傾斜度のような1つ以上の他の特性を考慮することができる。
【0169】
使用されたウィンドウサイズまたは発見されたセグメントの長さは、代案経路との代替のために考慮されるノードのペアの数に影響を及ぼす。前述したウィンドウサイズとカットオフパラメータ(考慮された最短経路を決定するのに使用される)は、考慮された可能な挿入の総数に影響を及ぼす。コストしきい値に付加してこれらのパラメータは、代案経路がカバーできる距離を制限することができ、したがって、代案経路が最初のツアーからどれくらい逸脱することができるかを制限することができる。500〜1000mの例示的なウィンドウサイズ及び1000〜3000mの例示的なカットオフ値の例示が図示されているが、他のウィンドウサイズ及び/またはカットオフ値が使用されることができる。多様な具現において、1つ以上のプロセッサは、ツアーの周辺に基づいてウィンドウサイズ及びカットオフ値を設定することができる。例えば、1つ以上のプロセッサは、都市(都心地域)付近または内部ツアーに対してウィンドウサイズ及びカットオフ値を第1の予め決定された値(例えば、それぞれ500m及び1000m)に設定し、田園(rural)地域付近または内部ツアーの場合は、第2の予め決定された値(例えば、それぞれ1000m及び3000m)に設定することができる。第2の予め決定された値は、それぞれ、第1の予め決定された値よりも大きい。
【0170】
多様な具現において、1つ以上のプロセッサは、セグメント内で考慮するノードのペアの間の最大距離を制限することができる。これは、最初のツアーからの長すぎる逸脱を避けるのを助けることができる。
【0171】
図19は、前述されたように生成された例示的な最初のツアー及び代案経路(青色)を含むグラフを含む。多様な具現において、1つ以上のプロセッサは、ディスプレイ上に最も快適な代案経路及び/または最も興味深い代案経路のみを、例えば、予め決定された値よりも大きいスコアを有する代替経路または最高スコアを有するX個の代案経路のみを視覚的に示すことができ、ここでXは0より大きい整数である。
図19の例示に図示されたように、1つ以上のプロセッサは、ディスプレイ上にユーザーがツアーを開始する前に、及び/またはユーザーがツアーのルートを横断する間に、柔軟な/代案経路を付いて行くことができるツアーの代案経路及び/またはセクションを表示することができる。1つ以上のプロセッサは、ユーザーがツアーから代案経路に入るときや離れるときに出力(可聴、視覚及び/またはハプティック)を生成すること、または生成しないことができる。多様な具現において(例えば、
図21、
図23、
図25及び
図27の例示のように)、1つ以上のプロセッサは、ツアーの目標の長さを調整するためのユーザー入力に応答して、ディスプレイ上に、1つ以上のプロセッサによって提供される新しいツアーと一緒に柔軟な/代案経路を付いて行くことができるツアーの代案経路及び/またはセクションを表示することができる。
【0172】
それぞれの許容可能な代案経路に対して、1つ以上のプロセッサは、最初のツアー内に導入されたスコア及び距離の変更に対するデータを格納する。それぞれの代案経路は、代替されたセグメントとほぼ同じであったり、初期ツアーの費用及び/または距離を増加させたり、減少させることができる。格納されたデータに基づいて、1つ以上のプロセッサは、ツアーの横断の間にユーザーデバイス(14)を通じて(例えば、聴覚的に及び/または視覚的に)ユーザーに通知することができる。これは、ユーザーに対して可能な代案の中から動的に選択するように許容することができる。
【0173】
多様な具現において、1つ以上のプロセッサは、ユーザー入力に応答してしきい値を設定することができる。例えば、ユーザーは、ユーザーとしてツアーが目標距離を有することを望むのか(代案経路を犠牲にする)、または、ユーザーとしてより多くの経路(例えば、快適な経路)を探索するように許容しながら、ツアーがもっと柔軟な目標距離を有することを望むのかに対する選好度をユーザーデバイス(14)に入力することができる。ユーザー入力に基づいて、1つ以上のプロセッサは、ユーザー選好度を最もよく達成するようにスコアしきい値及びコストしきい値を設定することができる。例えば、
図13及び
図17は、目標距離に対する厳守(adherence)及びより少ない探索柔軟性を図示する。
図12、
図14、
図16及び
図18は、目標距離に対するより緩和された厳守及びより多くの探索柔軟性を図示する。
【0174】
動的経路アップデート
前述されたように、1つ以上のプロセッサは、ユーザーが、生成したツアーをユーザーデバイス(14)を持って横断する間に、1つ以上の変更が行われるように許容することができる。初期のツアーを考慮すると、そして初期のツアーの一部が完成されたと考慮すると、1つ以上のプロセッサは、ユーザーデバイス(14)のユーザー入力に応答して、ツアーの目標距離及び/または目標期間(時間)を変更するためにツアーをアップデートすることができる。例えば、目標距離及び目標期間のうち少なくとも1つを増加させるためのユーザー入力に応答して、1つ以上のプロセッサは、ツアーの長さを増加させ、アップデートされた(長さが増加された)ツアーをユーザーデバイス(14)上に表示するために、ユーザーデバイス(14)に送信することができる。目標距離及び目標期間のうち少なくとも1つを減少させるためのユーザー入力に応答して、1つ以上のプロセッサは、ツアーの長さを減少させ、アップデートされた(長さが減少された)ツアーをユーザーデバイス(14)上に表示するために、ユーザーデバイス(14)に送信することができる。
【0175】
1つ以上のプロセッサは、また、ユーザーデバイス(14)からのユーザー入力を通じて提供されたアップデートされた終了位置に基づいてツアーをアップデートすることができる。
【0176】
例えば、1つ以上のプロセッサは、(a)目標距離が初期目標距離より長い場合は、初期の残留経路を、または(b)目標距離が初期目標距離より短い場合は、現在の位置と終点の間の最短経路を利用してcurrent_pathを初期化することができる。1つ以上のプロセッサは、下記を反復することができる:
a.変更するR(current_path)アークのセットを(例えば、ランダムに)選択することによって、ルートを定義し;
b.ルートの連続的な(そして必ずしも隣接する必要はない)アーク(AB及びEF)のそれぞれのペアの間で:
i.BからEまでの現在のセグメントをシーケンスSP(B、C)、CD、SP(D、E)-SPは最短経路(SP)である-に代替してcurrent_path内に新しいアーク(CD)の可能な挿入を決定し、
ii.距離及び高度制限条件を満たし、既に訪問されたノードを含まない可能な挿入のみを維持し、
c.最高のスコアを有するK個の可能な挿入から1つの可能な挿入を(例えば、ランダムに)挿入することによって、current_pathをアップデートする。
【0177】
上記において、Rは、現在経路の長さと事前に計算された最短経路の最大の長さの関数である。挿入のために考慮するアークの数は、計算された最短経路の最大の長さによって制限される。K(1以上の整数)は、根本的な(underlying)ローカル検索アルゴリズムの戦略を定義する。Kが小さいほど、アルゴリズムがよりグリーディである。例えば、Kが1のとき、最適の可能な挿入が(最高のスコアを有する)最適の可能な挿入になる。Kが大きいほど(可能な挿入のプール(pool)が大きくなるため)、検索はより探索的であることができる。
【0178】
current_pathの距離(または期間)が目標距離(または期間)の予め決定された範囲内にあるとき、1つ以上のプロセッサは中止し、current_path(現在のツアー)をユーザーデバイス(14)に返還することができる。代案的に、反復または計算時間制限が達成されると、1つ以上のプロセッサは中止し、current_path(現在のツアー)をユーザーデバイス(14)に返還することができる。
【0179】
図20は、すでに完成されたセクションが青色で図示され、まだ完成されていないセクションが赤色で図示された例示的な初期のツアーを含む。
図21は、ユーザー入力の受信に応答して、
図20の初期のツアーのまだ完成されていないセクションの残りに対して生成された黒色の新しい経路を含む。
【0180】
図22は、すでに完成されたセクションが青色で図示され、まだ完成されていないセクションが赤色で図示された例示的な初期のツアーを含む。
図23は、ユーザー入力の受信に応答して、
図22の初期のツアーのまだ完成されていないセクションの残りに対して生成された黒色の新しい経路を含む。
【0181】
ユーザー入力がツアーの長さ(目標距離または期間)の減少を表す場合、1つ以上のプロセッサは、ユーザー入力(目標距離または期間)を達成するために、ツアーから最小の快適なセグメント(1つ以上の最低スコアを有する)のうち1つ以上を識別し、ツアーから除去することができる。
【0182】
図24は、すでに完成されたセクションが青色(4km)で図示され、まだ完成されていないセクションが赤色(6km)で図示された例示的な初期のツアー(10km)を含む。
図25は、ツアーの長さを減少させるためのユーザー入力の受信に応答して生成された黒色の新しい経路(3km)を含む。
【0183】
図26は、すでに完成されたセクションが青色(4km)で図示され、まだ完成されていないセクションが赤色(6km)で図示された例示的な初期のツアー(10km)を含む。
図27は、ツアーの長さを減少させるためのユーザー入力の受信に応答して生成された黒色の新しい経路(3km)を含む。
【0184】
多様な具現において、ユーザー入力は、目標距離をすでに完成されたツアーの距離よりも小さく減少させることや、できる限り早く開始位置に復帰する標識を含むことができる。この例示において、1つ以上のプロセッサは、開始位置に復帰する可能な最短経路を決定し、その経路をユーザーデバイス(14)に送信する。多数の経路が最短距離を有する場合、1つ以上のプロセッサは、最高のスコアを有する最短経路をユーザーデバイス(14)に返還することができる。
【0185】
図28は、ツアーをアップデートする例示的な方法を図示したフローチャートを含む。2804において、1つ以上のプロセッサ(例えば、61a及び61cのうち少なくとも1つ)は、ユーザーデバイス(14)に提供された現在のツアーを取得する。2808において、1つ以上のプロセッサは、ユーザーデバイス(14)に提供された現在のツアーが開始されたか否かを判定する。つまり、1つ以上のプロセッサは、ユーザーデバイス(14)が、ユーザーデバイス(14)に提供された現在のツアーに付いて行くことを開始したか否かを判定する。
【0186】
2812において、1つ以上のプロセッサは、目標距離の変化または目標期間の変化のような現在のツアーの長さの変更に関する要請を表すユーザー入力が受信されたか否かを判定する。2812が偽である場合、1つ以上のプロセッサは、2816において現在のツアーを維持し、制御は2812に戻る。2812が真である場合、制御は2820に継続される。
【0187】
2820において、1つ以上のプロセッサは、前述されたように代替のための現在のツアーの一部を選択する。2824において、1つ以上のプロセッサは、前述されたように現在のツアーの一部の代わりに可能な挿入を識別する。2828において、1つ以上のプロセッサは、識別された可能な挿入から選択するが、例えば、最高のスコアを有し、(変更された)目標距離及び/または目標期間を達成するようにツアーの長さを最も近接に調整する可能な挿入を選択する。
【0188】
2832において、1つ以上のプロセッサは、選択された挿入を含むアップデートされたツアーを生成する。2836において、1つ以上のプロセッサは、選択された挿入を含むアップデートされたツアーをユーザーデバイス(14)に送信する。ユーザーデバイス(14)は、例えば、ディスプレイを通じて、アップデートされたツアーをユーザーに出力する。
図28の例示は、終了と図示されているが、制御は2804に戻ることができる。
【0189】
上記を考慮して、1つ以上のプロセッサは、ユーザーによって以前に遂行された他のウォーキングツアーに関する以前に収集されたユーザーデータ(例えば、要請するユーザーまたは他のユーザーによって遂行された以前の走行または歩行の跡)を使用せずにウォーキングツアーを生成する。これは、ユーザーの個人情報を保護し、同一または類似のウォーキングツアーが数回生成されることを防止する。また、以前に収集されたユーザーデータは、ユーザーデータの収集及び/または使用を制限する地理的領域のような一部位置では利用できないことがある。
【0190】
本明細書で使用される用語、「ウォーキング(pedestrian)」は、歩いたり走ったりして足で(on foot)旅行する人、人間動力車両(例えば、自転車、スケートボードなど)を使用して旅行する人及び非人間動力車両(例えば、電気-駆動スクーターまたはガス-駆動スクーター、オートバイ、カート、自動車など)を使用して旅行する人を含む。歩行者は、彼らが旅行する方式によって、道路、経路またはオフロード(例えば、登山路、経路など)またはこれらの組み合わせ(すべて共に、一般的に経路類型に称される)に沿って移動することができる。
【0191】
前述した説明は、本質的に単に例示的なものであり、本開示内容、その応用、または使用を制限しようとするものではない。本開示内容の幅広い教示は、様々な形態で具現されることができる。したがって、本開示内容は、特定の例を含むが、本開示内容の真の範囲はそれらに限定されてはならない。これは、図面、明細書及び下記請求の範囲の研究によって、他の変形が明らかになるからである。方法内の1つ以上のステップは、本開示内容の原則を変更せずに異なる順序で(または同時に)実行されることができることを理解すべきである。また、それぞれの実施例は、所定の特徴を有するものとして前述されたが、本開示内容の任意の実施例に関連して説明されたこれらの特徴のうち任意の1つ以上は、たとえその組み合わせが明示的に説明されてはいないが、任意の他の実施例の特徴として具現されることができ、また、それらと組み合わせられることができる。言い換えると、説明された実施例は、相互排他的ではなく、1つ以上の実施例の互いの置換は、本開示内容の範囲内にある。
【0192】
要素(例えば、モジュール、回路素子、半導体層など)の間の空間及び機能的関係は、「連結された」、「連携された」、「結合された」、「隣接した」、「近接した」、「上部に」、「上に」、「下に」及び「配置された」を含む多様な用語を使用して説明される。第1及び第2の要素の間の関係が上記開示内容において説明されるとき、「直接的な」ものとして明示的に言及されない限り、その関係は、他の中間要素が第1及び第2の要素の間に存在しない直接的な関係であることができるが、また、1つ以上の介在要素が第1の要素と第2の要素の間に(空間的にまたは機能的に)存在する間接的な関係であることもできる。本願において使用されたように、語句A、B及びCのうち少なくとも1つは、非排他的論理ORを使用して論理(A OR B OR C)を意味するものと解釈されるべきであり、「Aのうち少なくとも1つ、Bのうち少なくとも1つ及びCのうち少なくとも1つ」を意味するものと解釈されてはならない。
【0193】
図面において、矢印で表した矢印の方向は、一般的に例示において関連性のある(of interest)情報(例えば、データまたは命令)の流れを示す。例えば、要素Aと要素Bが様々な情報を交換するが、要素Aから要素Bに送信される情報が例示と関連がある場合には、矢印は、要素Aから要素Bに向かって指すことができる。これらの一方向の矢印は、他の情報は一切要素Bから要素Aに送信されないと暗示するものではない。また、要素Aから要素Bに送信された情報に対して、要素Bは情報の要請または受信応答確認を要素Aに送信することができる。
【0194】
下の定義を含め、本出願において、用語「モジュール」または用語「コントローラ」は、用語「回路」に代替されることができる。用語「モジュール」は、ASIC(Application Specific Integrated Circuit);デジタル、アナログまたは混合アナログ/デジタル離散回路;デジタル、アナログ、または混合アナログ/デジタル集積回路;組み合わせ論理回路;FPGA(Field Programmable Gate Array);コードを実行するプロセッサ回路(共有、専用またはグループ);プロセッサ回路によって実行されるコードを格納するメモリ回路(共有、専用またはグループ);説明された機能を提供する他の適切なハードウェアコンポーネント;またはシステム-オン-チップのように上記の一部または全部の組み合わせを称したり、その一部であったり、またはそれを含むことができる。
【0195】
モジュールは、1つ以上のインターフェース回路を含むことができる。一部の例示において、インターフェース回路は、近距離通信網(LAN)、インターネット、広域通信網(WAN)、またはこれらの組み合わせに連結された有線または無線インターフェースを含むことができる。本開示内容の任意の与えられたモジュールの機能は、インターフェース回路を通じて連結された多数のモジュールに分散されることができる。例えば、多数のモジュールが負荷分散(load balancing)を許容することができる。他の例示において、サーバー(遠隔またはクラウドとも知られている)モジュールは、クライアントモジュールの代わりに一部の機能を達成することができる。
【0196】
上記において使用された用語、コードは、ソフトウェア、ファームウェア、及び/またはマイクロコードを含むことができ、プログラム、ルーチン、機能、クラス、データ構造及び/またはオブジェクトを称することができる。用語、共有プロセッサ回路は、多数のモジュールから一部またはすべてのコードを実行する単一プロセッサ回路を含む。用語、グループプロセッサ回路は、追加プロセッサ回路と結合し、1つ以上のモジュールから一部またはすべてのコードを実行するプロセッサ回路を含む。多重プロセッサ回路に対する言及は、個別ダイ上の多重プロセッサ回路、単一ダイ上の多重プロセッサ回路、単一プロセッサ回路の多重コア、単一プロセッサ回路の多重スレッドまたはこれらの組み合わせを含む。用語、共有メモリ回路は、多数のモジュールの一部またはすべてのコードを格納する単一メモリ回路を含む。用語、グループメモリ回路は、追加メモリと結合し、1つ以上のモジュールからの一部またはすべてのコードを格納するメモリ回路を含む。
【0197】
用語、メモリ回路は、用語、コンピュータで読み取り可能な媒体のサブセットである。本明細書において使用される用語、コンピュータで読み取り可能な媒体は、(例えば、搬送波上で)媒体を通じて伝播される一時的な電気または電磁気信号を含まず;したがって用語、コンピュータ読み取り可能な媒体は、類型(tangible)であって、非一時的なものとみなされることができる。非一時的、類型のコンピュータで読み取り可能な媒体の非限定的例は、不揮発性メモリ回路(例えば、フラッシュメモリ回路、消去可能プログラム可能読み取り専用メモリ回路またはマスク読み出し専用メモリ回路)、揮発性メモリ回路(例えば、静的ランダムアクセスメモリ回路または動的ランダムアクセスメモリ回路)、磁気格納媒体(例えば、アナログまたはデジタル磁気テープまたはハードディスクドライブ)、光学格納媒体(例えば、CD、DVDまたはBlu-rayディスク)である。
【0198】
本出願において説明されたデバイス及び方法は、コンピュータプログラムで具現された1つ以上の特定の機能を実行するように汎用コンピュータを構成することによって生成された、特殊目的コンピュータによって部分的にまたは完全に具現されることができる。前述した機能ブロック、フローチャートコンポーネント及びその他の要素は、熟練した技術者またはプログラマーの日常的な作業によってコンピュータプログラムに変換されることができるソフトウェアの仕様としての役割を有する。
【0199】
コンピュータプログラムは、少なくとも1つの非一時的、類型のコンピュータで読み取り可能な媒体に格納されたプロセッサ実行可能命令を含む。コンピュータプログラムはまた、格納されたデータを含むことができ、また、それに依存することができる。コンピュータプログラムは、特殊目的コンピュータのハードウェアと相互作用する基本入力/出力システム(BIOS)、特殊目的コンピュータの特定デバイスと相互作用するデバイスドライバ、1つ以上のオペレーティングシステム、ユーザーアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーションなどを含むことができる。
【0200】
コンピュータプログラムは、以下を含むことができる:(i)ハイパーテキストマークアップランゲージ(HTML)、エクステンシブルマークアップランゲージ(XML)またはJavaScriptオブジェクト表記法(JSON)のようなパーシングされる(parsed)説明テキスト、(ii)アセンブリコード、(iii)コンパイラによってソースコードから生成されたオブジェクトコード、(iv)インタプリタによる実行のためのソースコード、(v)JIT(just-in-time)コンパイラによるコンパイリング及び実行のためのソースコードなど。例えば、ソースコードは、C、C++、C#、Objective-C、Swift、Haskell、Go、SQL、R、Lisp、Java(登録商標)、Fortran、Perl、Pascal、Curl、OCaml、Javascript(登録商標)、HTML5(ハイパーテキストマークアップランゲージ5次改正)、Ada、ASP(Active Server Pages)、PHP(PHP:Hypertext Preprocessor)、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(登録商標)、Visual Basic(登録商標)、Lua、MATLAB、SIMULINK及びPython(登録商標)を含む言語の構文を使用して作成されることができる。