以下の説明は、あらゆる当業者が本開示を作成し、使用することができるように提示され、かつ特定の用途及びその要件の文脈において提供される。開示される実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本開示の精神及び範囲から逸脱することなく、他の実施形態及び用途に適用されてもよい。したがって、本開示は、示された実施形態に限定されるものではなく、特許請求の範囲と矛盾しない最大の範囲まで許容されるものとする。
本明細書で用いられる用語は、具体的な例示的実施形態を記述することのみを目的とするものであり、限定的であることを意図しない。本明細書で用いられる場合には、「a」、「an」の単数形及び「the」は、文脈上で明確に別途示されない限り、同様に複数形も包含することを意図するものとする。「comprise(備える)」、「comprises」、及び/又は「comprising」、「include(含む)」、「includes」、及び/又は「including」などの用語は、本開示において用いられる場合、記述される特徴、整数、ステップ、動作、要素、及び/又は構成部品の存在を明示しているが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成部品、及び/又はそれらの群の存在又は追加を排除するものではないことがさらに理解されるであろう。
本開示の上記及び上記以外の特徴及び性質、ならびに関連する構成要素及び各部分の組み合わせの動作方法と機能、及び製造の経済性については、以下の詳細な説明を添付の図面を参照して検討することにより、さらに明らかになり、これらはいずれも本開示の一部を構成する。しかしながら、図面は、例示及び説明のみを目的とするものであり、本開示の範囲を限定するものではないことは、明確に理解されるべきである。図面は縮尺通りではないことを理解すべきである。
本開示において用いられるフローチャートは、本開示のいくつかの実施形態に従ってシステムが実施する動作を示す。フローチャートの動作は、順序通りに実施されなくてもよいことは、明確に理解されるであろう。逆に、動作は、逆の順序で、又は同時に実施されてもよい。さらに、1つ以上の他の動作が、フローチャートに追加されてもよい。1つ以上の動作は、フローチャートから削除されてもよい。
さらに、本開示におけるシステム及び方法は、オンデマンド輸送サービスに関して説明されるが、それが一つの例示的な実施形態に過ぎないことも理解されたい。本開示のシステム又は方法は、他の種類のオンデマンドサービスにも適用することができる。例えば、本開示のシステム又は方法は、土地、海洋、航空宇宙など、又はそれらの任意の組み合わせを含む異なる環境の輸送システムに適用することができる。輸送システムの車両は、タクシー、自家用車、ヒッチ、バス、列車、超特急列車、高速鉄道、地下鉄、船舶、航空機、宇宙船、熱気球、自動運転車など、又はそれらの任意の組み合わせを含むことができる。輸送システムは、管理及び/又は流通のための任意の輸送システム、例えば、速達便を発送及び/又は受領するシステムを含むこともできる。本開示のシステム又は方法の適用は、ウェブページ、ブラウザのプラグイン、クライアント端末、カスタムシステム、内部解析システム、人工知能ロボットなど、又はそれらの任意の組み合わせを含むことができる。
本開示における「乗客」、「要求元」、「サービス要求元」、及び「顧客」という用語は、サービスを要求するか又は注文することができる個人、実体又はツールを指すために互換的に用いられる。また、本開示における「運転手」、「提供元」、「サービス提供元」、及び「供給元」という用語は、サービスを提供するか、又はサービスの提供を容易化することができる個人、実体又はツールを指すために互換的に用いられる。本開示における「ユーザ」という用語は、サービスを要求し、サービスを注文し、サービスを提供するか、又はサービスの提供を容易化することができる個人、実体又はツールを指すことができる。例えば、ユーザは、乗客、運転手、オペレータなど、又はそれらの任意の組み合わせであってもよい。本開示において、「乗客」と「乗客端末」は、互換的に用いられてもよく、「運転手」と「運転手端末」は、互換的に用いられてもよい。
本開示における「サービス要求」と「注文」という用語は、互換的に用いられて、乗客、要求元、サービス要求元、顧客、運転手、提供元、サービス提供元、供給元など、又はそれらの任意の組み合わせによって開始される要求を指す。前記サービス要求は、乗客、要求元、サービス要求元、顧客、運転手、提供元、サービス提供元、又は供給元のいずれか1つによって受け入れることができる。前記サービス要求は、有料である場合も、無料である場合もある。
本開示において用いられる位置決め技術は、全地球測位システム(GPS)、全地球航法衛星システム(GLONASS)、コンパス測位システム(COMPASS)、ガリレオ測位システム、準天頂衛星システム(QZSS)、ワイヤレスフィデリティ(WiFi)測位技術など、又はそれらの任意の組み合わせに基づいてもよい。上記測位システムのうちの1つ以上は、本開示において互換的に用いられてもよい。
本開示の一態様は、要求に応答して経路を推奨するためのオンラインシステム及び方法を提供する。前記システム及び方法は、端末から、出発地及び目的地を含む要求を受信してもよい。前記システム及び方法は、敵対的生成ネットワーク(GAN)モデルに基づいて、前記要求に応答して、前記出発地から前記目的地まで移動する推奨される経路を決定してもよい。前記システム及び方法は、さらに、前記端末に表示される対象となる前記推奨される経路を送信してもよい。本開示に係るシステム及び方法も、複数の履歴注文に関連付けられた複数のサンプル経路に基づいて、前記GANモデルをトレーニングしてもよい。したがって、本開示は、経路計画の効率及び実用性を向上させる。
経路計画は、全体として、インターネットの世界に深く根ざした技術である。端末とサーバとの間のリアルタイムGPS測位及びリアルタイム通信の可能性がなければ、要求に対して、出発地及び目的地を含む経路を推奨することは不可能である。また、経路を推奨することは、リアルタイム交通状況情報を必要とする。したがって、本開示に開示された技術手段も、インターネット時代に深く根ざした技術である。
プラットフォームのアプリケーションシナリオに対して、前記アプリケーションシナリオは、ユーザ端末(例えば、要求元端末又は提供元端末)及び車両(例えば、タクシー)を含んでもよい。前記ユーザ端末がサービス要求を行う時、前記プラットフォームは、位置情報(例えば、出発地、目的地など)及び/又は参照情報(例えば、交通情報)を取得してもよい。例えば、ユーザがタクシーを呼び寄せるとき、前記プラットフォームは、前記ユーザの位置情報を取得し、前記位置情報に基づいて経路を推奨し、前記タクシー運転手及び前記ユーザに、前記推奨される経路を提供してもよい。
図1は、本開示のいくつかの実施形態に係る例示的なオンデマンドサービスシステム100を示す概略図である。例えば、オンデマンドサービスシステム100は、タクシー配車、運転代行、配達車、相乗り、バス運行、運転手付きハイヤ、及び折り返し運転などの輸送サービス用のオンライン輸送サービスプラットフォームであってよい。オンデマンドサービスシステム100は、サーバ110、ネットワーク120、要求元端末130、提供元端末140、データベース150、及び測位システム160を含むオンラインプラットフォームであってもよい。サーバ110は、処理エンジン112を含んでもよい。
いくつかの実施形態では、サーバ110は、単一のサーバ又はサーバグループであってもよい。前記サーバグループは、集中型であっても分散型であってもよい(例えば、サーバ110は、分散型システムであってもよい)。いくつかの実施形態では、サーバ110は、ローカルであってもリモートであってもよい。例えば、サーバ110は、ネットワーク120を介して、要求元端末130、提供元端末140及び/又はデータベース150に記憶された情報及び/又はデータにアクセスしてもよい。他の例として、サーバ110は、記憶された情報及び/又はデータにアクセスするために、要求元端末130、提供元端末140及び/又は前記データベース150に直接に接続してもよい。いくつかの実施形態では、サーバ110は、クラウドプラットフォームで実装されてもよい。単に例として、前記クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散クラウド、インタークラウド、マルチクラウドなど、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、サーバ110は、本開示の図2に示す1つ以上のコンポーネントを有するコンピューティングデバイス200で実装されてもよい。
いくつかの実施形態では、サーバ110は、処理エンジン112を含んでもよい。処理エンジン112は、本開示に記載された1つ以上の機能を実施するために、サービス要求に関連する情報及び/又はデータを処理してもよい。例えば、処理エンジン112は、要求元端末130から取得された要求に応答して、出発地から目的地まで移動する推奨される経路を決定してもよい。いくつかの実施形態では、処理エンジン112は、1つ以上の処理エンジン(例えば、シングルコア処理エンジン又はマルチコアプロセッサ)を含んでもよい。単に例として、処理エンジン112は、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、特定用途向け命令セットプロセッサ(ASIP)、グラフィックス処理ユニット(GPU)、物理演算処理装置(PPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、コントローラ、マイクロコントローラユニット、縮小命令セットコンピュータ(RISC)、マイクロプロセッサなど、又はそれらの任意の組み合わせなどの1つ以上のハードウェアプロセッサを含んでもよい。
ネットワーク120は、情報及び/又はデータの交換を円滑化してもよい。いくつかの実施形態では、オンデマンドサービスシステム100の1つ以上のコンポーネント(例えば、サーバ110、要求元端末130、提供元端末140、データベース150、及び測位システム160)は、ネットワーク120を介して、オンデマンドサービスシステム100の他のコンポーネントに、情報及び/又はデータを送信してもよい。例えば、サーバ110は、ネットワーク120を介して、要求元端末130からサービス要求を取得/入手してもよい。いくつかの実施形態では、ネットワーク120は、任意のタイプの有線又は無線ネットワーク、又はそれらの組み合わせであってもよい。単に例として、ネットワーク130は、ケーブルネットワーク、有線ネットワーク、光ファイバーネットワーク、テレコミュニケーションネットワーク、イントラネット、インターネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワイヤレスローカルエリアネットワーク(WLAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、公衆電話交換網(PSTN)、Bluetoothネットワーク、ZigBeeネットワーク、近距離無線通信(NFC)ネットワーク、など、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、ネットワーク120は、1つ以上のネットワークアクセスポイントを含んでもよい。例えば、ネットワーク120は、基地局及び/又はインターネット交換ポイント120−1、120−2などのような有線又は無線のネットワークアクセスポイントを含んでもよく、それを介してオンデマンドサービスシステム100の1つ以上のコンポーネントがネットワーク120に接続されてデータ及び/又は情報を交換する。
いくつかの実施形態では、要求元は、要求元端末130のユーザであってもよい。いくつかの実施形態では、要求元端末130のユーザは、要求元以外の他の何者かであってもよい。例えば、要求元端末130のユーザAは、要求元端末130を用いて、ユーザBに対するサービス要求を送信するか、又はサーバ110からサービス及び/又は情報あるいは命令を受信することができる。いくつかの実施形態では、提供元は、提供元端末140のユーザであってもよい。いくつかの実施形態では、提供元端末140のユーザは、提供元以外の他の何者かであってもよい。例えば、提供元端末140のユーザCは、提供元端末140を用いて、ユーザDに対するサービス要求、及び/又はサーバ110から情報又は命令を受信してもよい。いくつかの実施形態では、「要求元」と「要求元端末」は、互換的に用いられてもよく、「提供元」と「提供元端末」は、互換的に用いられてもよい。
いくつかの実施形態では、要求元端末130は、モバイルデバイス130−1、タブレット型コンピュータ130−2、ラップトップ型コンピュータ130−3、自動車内の内蔵デバイス130−4など、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、モバイルデバイス130−1は、スマートホームデバイス、ウエアラブルデバイス、モバイルデバイス、仮想現実装置、拡張現実装置など、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、前記スマートホームデバイスは、スマート照明装置、インテリジェント電気装置の制御装置、スマート監視装置、スマートテレビ、スマートビデオカメラ、インターフォンなど、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、前記ウエアラブルデバイスは、ブレスレット、フットギア、眼鏡、ヘルメット、時計、衣類、バックパック、スマートアクセサリーなど、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、前記モバイルデバイスは、携帯電話、携帯情報端末(PDA)、ゲーミングデバイス、ナビゲーション装置、販売時点情報管理(POS)装置、ラップトップ、デスクトップなど、又はそれらの任意の組み合わせを含んでもよい。いくつかの実施形態では、前記仮想現実装置及び/又は前記拡張現実装置は、仮想現実ヘルメット、仮想現実眼鏡、仮想現実パッチ、拡張現実ヘルメット、拡張現実眼鏡、拡張現実パッチなど、又はそれらの任意の組み合わせを含んでもよい。例えば、前記仮想現実装置及び/又は拡張現実装置は、グーグルグラスTM、リフトコンTM、フラグメンツTM、ギヤVRTMなどを含んでもよい。いくつかの実施形態では、自動車内の内蔵デバイス130−4は、車載コンピュータ、車載テレビなどを含んでもよい。いくつかの実施形態では、要求元端末130は、要求元及び/又は要求元端末130の位置を決める測位技術を備えたデバイスであってよい。
いくつかの実施形態では、提供元端末140は、要求元端末130と類似の、又は同一のデバイスであってもよい。いくつかの実施形態では、提供元端末140は、提供元端末140(例えば、サービスプロバイダ)のユーザ及び/又は提供元端末140の位置を決める測位技術を利用する装置であってもよい。いくつかの実施形態では、要求元端末130及び/又は提供元端末140は、前記要求元、要求元端末130、前記提供元及び/又は提供元端末140の位置を決定するために、1つ以上の他の測位装置と通信してもよい。いくつかの実施形態では、要求元端末130及び/又は提供元端末140は、測位情報を前記サーバ110に送信してもよい。
データベース150は、データ及び/又は命令を記憶してもよい。いくつかの実施形態では、データベース150は、要求元端末130及び/又は提供元端末140から取得されたデータを記憶してもよい。いくつかの実施形態では、データベース150は、サーバ110が本開示に記載された例示的な方法を実施するために実行するか又は使用するデータ及び/又は命令を記憶してもよい。いくつかの実施形態では、データベース150は、マスストレージ、リムーバブルストレージ、揮発性読み書きメモリ、リードオンリーメモリ(ROM)など、又はそれらの任意の組み合わせを含んでもよい。例示的なマスストレージは、磁気ディスク、光ディスク、ソリッドステートドライブなどを含んでもよい。例示的なリムーバブルストレージは、フラッシュドライブ、フロッピーディスク、光ディスク、メモリーカード、ジップディスク、磁気テープなどを含んでもよい。例示的な揮発性読み書きメモリは、ランダムアクセスメモリ(RAM)を含んでもよい。例示的なRAMは、ダイナミックRAM(DRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、スタティックRAM(SRAM)、サイリスタRAM(T−RAM)、ゼロキャパシタRAM(Z−RAM)などを含んでもよい。例示的なROMは、マスクROM(MROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、コンパクトディスクROM(CD−ROM)、及びデジタルバーサタイルディスクROMなどを含んでもよい。いくつかの実施形態では、データベース150は、クラウドプラットフォームで実装されてもよい。単に例として、前記クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散クラウド、インタークラウド、マルチクラウドなど、又はそれらの任意の組み合わせを含んでもよい。
いくつかの実施形態では、データベース150は、オンデマンドサービスシステム100の1つ以上のコンポーネント(例えば、サーバ110、要求元端末130、提供元端末140など)と通信するために、ネットワーク120に接続されてもよい。オンデマンドサービスシステム100内の1つ以上のコンポーネントは、ネットワーク120を介して、データベース150に記憶されたデータ又は命令にアクセスしてもよい。いくつかの実施形態では、データベース150は、オンデマンドサービスシステム100内の1つ以上のコンポーネント(例えば、サーバ110、要求元端末130、提供元端末140など)と直接、接続するか、又は通信してもよい。いくつかの実施形態では、データベース150は、サーバ110の一部であってよい。
測位システム160は、例えば、要求元端末130、提供元端末140などの1つ以上の対象に関連付けられた情報を決定してもよい。前記情報は、対象の位置、高度、速度、又は加速度、又は現在の時間を含んでもよい。例えば、測位システム160は、要求元端末130の現在の位置を決定してもよい。いくつかの実施形態では、測位システム160は、全地球測位システム(GPS)、全地球航法衛星システム(GLONASS)、コンパス測位システム(COMPASS)、北斗衛星測位システム、ガリレオ測位システム、準天頂衛星システム(QZSS)などであってもよい。前記位置は、緯度座標及び経度座標などの座標の形式であってもよい。測位システム160は、1つ以上の衛星、例えば、衛星160−1、衛星160−2、及び衛星160−3を含んでもよい。衛星160−1〜160−3は、独立して又は共同で上記情報を決定してもよい。衛星測位システム160は、無線接続を介して、上記情報をネットワーク120、要求元端末130、又は提供元端末140に送信してもよい。
いくつかの実施形態では、オンデマンドサービスシステム100(例えば、サーバ110、要求元端末130、提供元端末140)の1つ以上のコンポーネントは、データベース150にアクセスする許可を有してもよい。いくつかの実施形態では、オンデマンドサービスシステム100の1つ以上のコンポーネントは、1つ以上の条件が満たされたときに、前記要求元、提供元及び/又は公共に関連する情報の読み取り及び/又は変更を行ってもよい。例えば、サーバ110は、サービスが完了した後に1つ以上のユーザの情報の読み取り及び/又は変更を行ってもよい。他の例として、要求元端末130からサービス要求を受信したときに、提供元端末140は、前記要求元に関連する情報にアクセスしてもよいが、提供元端末140は、前記要求元の関連情報を変更しなくてもよい。
いくつかの実施形態では、オンデマンドサービスシステム100内の1つ以上のコンポーネントの情報交換は、サービスを要求することにより達成されてもよい。前記サービス要求の対象は、任意の製品であってもよい。いくつかの実施形態では、前記製品は、有形製品であってもよく、無形製品であってもよい。前記有形製品は、食品、医薬品、日用品、化学製品、電気器具、衣類、自動車、住宅、贅沢品など、又はそれらの任意の組み合わせを含んでもよい。前記無形製品は、サービス提供商品、金融商品、ナレッジ製品、インターネット製品など、又はそれらの任意の組み合わせを含んでもよい。前記インターネット製品は、個別ホスト製品、ウェブ製品、モバイルインターネット製品、商用ホスト製品、組み込み製品など、又はそれらの任意の組み合わせを含んでもよい。前記モバイルインターネット製品は、移動端末のソフトウェア、プログラム、システムなど、又はそれらの任意の組み合わせで用いられてもよい。前記移動端末は、タブレット型コンピュータ、ラップトップ型コンピュータ、携帯電話、携帯情報端末(PDA)、スマートウォッチ、販売時点情報管理(POS)装置、車載コンピュータ、車載テレビ、ウエアラブルデバイスなど、又はそれらの任意の組み合わせを含んでもよい。例えば、前記製品は、前記コンピュータ又は携帯電話で用いられる任意のソフトウェア及び/又はアプリケーションであってもよい。前記ソフトウェア及び/又はアプリケーションは、社交、ショッピング、輸送、娯楽、学習、投資など、又はそれらの任意の組み合わせに関連してもよい。いくつかの実施形態では、輸送に関連する前記ソフトウェア及び/又はアプリケーションは、旅行ソフトウェア及び/又はアプリケーション、車両スケジューリングソフトウェア及び/又はアプリケーション、地図作成ソフトウェア及び/又はアプリケーションなどを含んでもよい。前記車両スケジューリングソフトウェア及び/又はアプリケーションでは、前記車両は、馬、馬車、人力車(例えば、手押し一輪車、自転車、三輪車)、自動車(例えば、タクシー、バス、自家用車)、列車、地下鉄、船舶、航空機(例えば、飛行機、ヘリコプター、宇宙連絡船、ロケット、熱気球)など、又はそれらの任意の組み合わせを含んでもよい。
図1に示されたアプリケーションシナリオは、例証のみを目的とするものであり、本開示の範囲を限定するものではないことに注意されたい。例えば、オンデマンドサービスシステム100は、ナビゲーションシステムとして用いられてもよい。前記ナビゲーションシステムは、ユーザ端末(例えば、要求元端末130又は提供元端末140)及びサーバ(例えば、サーバ110)を含んでもよい。ユーザは、ユーザ端末を介して出発地及び目的地を入力してもよい。したがって、前記ナビゲーションシステムは、本開示に記載されたプロセス及び/又は方法に基づいて、出発地から目的地まで移動する経路を推奨し、表示される対象となる推奨される経路をユーザ端末に提供してもよい。
図2は、本開示のいくつかの実施形態に係るサーバ110、要求元端末130、及び/又は提供元端末140が実装されてもよいコンピューティングデバイス200の例示的なハードウェア及び/又はソフトウェアコンポーネントを示す概略図である。例えば、処理エンジン112は、コンピューティングデバイス200で実装されると共に、本開示で開示される処理エンジン112の機能を実施するように構成されてもよい。
コンピューティングデバイス200は、汎用コンピュータ又は専用コンピュータであってもよく、両方とも、本開示のオンデマンドシステムを実装するために用いられてもよい。コンピューティングデバイス200は、本明細書で記載されるように、オンデマンドサービスシステムの任意のコンポーネントを実装するために用いられてもよい。例えば、処理エンジン112は、そのハードウェア、ソフトウェアプログラム、ファームウェア、又はそれらの組み合わせを介して、コンピューティングデバイスで実装されてもよい。そのようなコンピュータの1つのみを便宜上示すが、処理負荷を分散するために、本明細書に記載されたオンデマンドサービスに関連するコンピュータ機能が、多くの類似のプラットフォームに分散して実装されてもよい。
コンピューティングデバイス200は、例えば、データ通信を円滑化するために、ネットワークに接続される及び/又はネットワークから接続されるCOMポート250を含んでもよい。コンピューティングデバイス200も、プログラム命令を実行するための1つ以上のプロセッサの形態の中央処理装置(CPU)220を含んでもよい。前記例示的なコンピューティングデバイスは、様々なデータファイルをコンピューティングデバイスで処理及び/又は送信するために、内部通信バス210、例えばディスク270を含む異なる形式のプログラムストレージとデータストレージ、及びリードオンリーメモリ(ROM)230又はランダムアクセスメモリ(RAM)240を含んでもよい。前記例示的なコンピューティングデバイスも、ROM230、RAM240、及び/又はCPU220によって実行される他のタイプの非一時的な記憶媒体に記憶されたプログラム命令を含んでもよい。本開示の方法及び/又はプロセスは、前記プログラム命令として実装されてもよい。コンピューティングデバイス200も、前記コンピュータと他のコンポーネントとの間の入出力をサポートするI/Oコンポーネント260を含んでもよい。コンピューティングデバイス200は、ネットワーク通信を介してプログラミング及びデータを受信することもできる。
単なる例示を目的とし、コンピューティングデバイス200において、1つのCPU及び/又はプロセッサのみを記載する。しかしながら、本開示におけるコンピューティングデバイス200も、多数のCPU及び/又はプロセッサを含んでもよいため、本開示で説明されるように、1つのCPU及び/又はプロセッサによって実施される動作及び/又は方法ステップも、多数のCPU及び/又はプロセッサによって共同で又は別々に実施されてもよい。例えば、本開示において、コンピューティングデバイス200のCPU及び/又はプロセッサがステップA及びステップBの両方を実行する場合、ステップA及びステップBは、コンピューティングデバイス200において2つの異なるCPU及び/又はプロセッサによって共同で又は別々に実施することができる(例えば、第1のプロセッサがステップAを実行し、第2のプロセッサがステップBを実行するか、又は第1のプロセッサと第2のプロセッサがステップA及びステップBを共同で実行する)ことは理解されるであろう。
図3は、本開示のいくつかの実施形態に係る例示的な処理エンジン112を示すブロック図である。処理エンジン112は、受信モジュール310、トレーニングモジュール320、決定モジュール330、及び通信モジュール340を含んでもよい。
受信モジュール310は、要求を受信するように構成されてもよい。受信モジュール310は、ネットワーク120を介して要求元端末130から前記要求を受信してもよい。前記要求は、出発地、目的地、出発時間などを含んでもよい。いくつかの実施形態では、受信モジュール310は、要求に関連付けられた参照情報をさらに取得してもよい。前記参照情報は、前記要求に関連付けられた交通情報、前記要求に関連付けられた気象情報などを含んでもよい。いくつかの実施形態では、前記受信された情報(例えば、前記要求、前記参照情報など)は、さらに処理されるように他のモジュール(例えば決定モジュール330)に送信されてもよい。
トレーニングモジュール320は、経路計画のためのモデルをトレーニングするように構成されてもよい。前記モデルは、敵対的生成ネットワーク(GAN)モデルであってもよい。前記GANモデルは、識別モデル及び生成モデルを含んでもよい。トレーニングモジュール320は、複数のサンプル経路(例えば、複数の履歴注文に関連付けられた複数のサンプル経路)に基づいて、前記GANモデルをトレーニングしてもよい。いくつかの実施形態では、前記トレーニングされたモデルは、決定モジュール330に送信されてもよい。いくつかの実施形態では、前記トレーニングされたモデルは、本開示の他の箇所に開示された記憶装置(例えば、データベース150、処理エンジン112に集積された記憶モジュール(図示せず))に送信されて記憶されてもよい。
いくつかの実施形態では、前記複数の履歴注文は、時間基準に基づいて選択されてもよい。例えば、前記複数の履歴注文は、ある期間内、すなわち過去6ヶ月、過去1週間、6ヶ月間にわたり毎日午前8時〜午前9時などで選択されてもよい。いくつかの他の実施形態では、前記複数の履歴注文は、空間基準に基づいて選択されてもよい。例えば、前記複数の履歴注文は、1つのエリア内、すなわち、ワシントンD.C.エリア、キャピタルヒルを中心とする半径3マイルのエリア内などで選択されてもよい。さらに他の実施形態では、前記複数の履歴注文は、1つ以上のパラメータ、例えば車両のタイプ、目的地、乗客のプロフィール、運転手のプロフィール、サービス料金などに関して選択されてもよい。
決定モジュール330は、前記GANモデルに基づいて、要求に応答して、推奨される経路を決定するように構成されてもよい。決定モジュール330は、受信モジュール310から前記要求を取得し、トレーニングモジュール320から前記GANモデルを取得してもよい。決定モジュール330は、前記推奨される経路を通信モジュール340に送信してもよい。
通信モジュール340は、前記推奨される経路を要求元端末130及び/又は提供元端末140に送信するように構成されてもよい。前記推奨される経路は、要求元端末130及び/又は提供元端末140に表示されてもよい。いくつかの実施形態では、前記推奨される経路は、テキスト、画像、ビデオコンテンツ、オーディオコンテンツ、グラフィックスなどの形式、又はそれらの組み合わせで要求元端末130及び/又は提供元端末140に提示されてもよい。
処理エンジン112内のモジュールは、有線接続又は無線接続を介して互いに接続又は通信されてもよい。前記有線接続は、金属ケーブル、光ケーブル、ハイブリッドケーブルなど、又はそれらの任意の組み合わせを含んでもよい。前記無線接続は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、Bluetooth、ZigBee、近距離通信(NFC)など、又はそれらの任意の組み合わせを含んでもよい。2つ以上のモジュールは、単一のモジュールとして組み合わせられてもよく、いずれか1つのモジュールは、2つ以上のユニットに分割されてもよい。例えば、受信モジュール310は、要求を取得することと、推奨される経路を決定することとの両方を行ってもよい単一のモジュールとして決定モジュール330に集積されてもよい。他の例として、処理エンジン112は、前記要求、前記トレーニングされるモデル、前記推奨される経路、及び/又は前記要求に関連付けられた任意の情報を記憶するように構成されてもよい記憶モジュール(図3には図示せず)を含んでもよい。
図4は、本開示のいくつかの実施形態に係る推奨される経路を決定するための例示的なプロセス/方法400のフローチャートである。プロセス及び/又は方法400は、オンデマンドサービスシステム100によって実行されてもよい。例えば、プロセス及び/又は方法400は、ストレージROM230又はRAM240に記憶された命令のセット(例えば、アプリケーション)として実装されてもよい。CPU220は、命令のセットを実行してもよく、それに応じてプロセス及び/又は方法400を実施するように指示されてもよい。以下に提示される例示のプロセス/方法の動作は、例証を意図したものである。いくつかの実施形態では、前記プロセス/方法は、説明されていない1つ以上の動作の追加で、及び/又は1つ以上の論じられた動作なしで実現されてもよい。さらに、図4に示され、以下に説明されるプロセス/方法の動作の順序は、限定的なものではない。
ステップ410では、処理エンジン112は、要求を受信してもよい。処理エンジン112は、ネットワーク120を介して、要求元端末130から前記要求を受信してもよい。前記要求は、出発地、目的地、出発時間(例えば、現在の瞬間、予定時間など)を含んでもよい。
ステップ420では、処理エンジン112は、GANモデルを決定してもよい。本明細書で用いられるように、前記GANモデルは、前記要求に応答して、経路を生成するために用いられてもよい。前記GANモデルは、識別モデル及び生成モデルを含んでもよい。処理エンジン112は、履歴情報に基づいて、予備生成モデルと予備識別モデルを含む予備GANモデルをトレーニングすることによってGANモデルを決定してもよい。例えば、処理エンジン112は、複数の履歴注文に関連付けられた複数のサンプル経路に基づいて予備生成モデル及び予備識別モデルをトレーニングしてもよい。本明細書で用いられるように、「履歴注文」という用語は、一般的に、完了した要求及びそれに関連付けられた情報を指す。例えば、図1に示すアプリケーションシナリオに対して、要求元は、オンデマンドサービスシステム100に、輸送サービスのための出発地及び目的地を含む要求を送信してもよい。サービス提供元は、前記要求を受け入れ、前記出発地から前記目的地まで移動する経路に沿って輸送サービスを提供してもよい。前記サービス提供元が目的地で要求元を降ろした後、オンデマンドサービスシステム100は、本開示の他の箇所に開示された記憶装置に経路を記憶してもよい。前記GANモデルをトレーニングしてもよいステップ420では、前記経路をサンプル経路として用いてもよい。
ステップ430では、処理エンジン112は、前記GANモデルに基づいて、前記出発地から前記目的地まで移動する推奨される経路を決定してもよい。
ステップ440では、処理エンジン112は、要求元端末130及び/又は提供元端末140に表示される対象となる前記推奨される経路を送信してもよい。前記推奨される経路は、1つ以上のユーザインタフェース(図示せず)を介して、要求元端末130及び/又は前記提供元端末に提示されてもよい。いくつかの実施形態では、前記推奨される経路は、任意の適切な通信プロトコル(例えば、ハイパーテキスト転送プロトコル(HTTP)、アドレス解決プロトコル(ARP)、動的ホスト構成プロトコル(DHCP)、ファイル転送プロトコル(FTP)など)を使用するメッセージを介して、送信及び/又は受信されてもよい。
上記の説明は、例証のみを目的とするものであり、本開示の範囲を限定するものではないことに注意されたい。当業者であれば、本開示の教示の下で多数の変形及び修正を行うことが可能である。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。例えば、例示的なプロセス/方法400の他の箇所に、1つ以上の他の任意のステップ(例えば記憶ステップ)が追加されてもよい。
図5は、本開示のいくつかの実施形態に係る例示的なトレーニングモジュール320を示すブロック図である。トレーニングモジュール320は、取得ユニット510、生成モデル決定ユニット520、識別モデル決定ユニット530、及び生成ユニット540を含んでもよい。
取得ユニット510は、サンプル経路セットを取得するように構成されてもよい。取得ユニット510は、本開示の他の箇所に開示されている記憶装置(例えば、データベース150、処理エンジン112に集積された記憶モジュール(図示せず)など)から前記サンプル経路セットを取得してもよい。本明細書で用いられるように、前記サンプル経路セットは、特定の期間(例えば過去1ヶ月)内の複数の履歴注文に関連付けられたサンプル経路のセットであってもよい。
生成モデル決定ユニット520は、生成モデルを決定するように構成されてもよい。生成モデル決定ユニット520は、予備生成モデルをトレーニングすることによって生成モデルを決定してもよい。前記予備生成モデルは、オンデマンドサービスシステム100のデフォルト設定であってもよく、異なる状況下で調整可能であってもよい。前記予備生成モデルは、複数の生成パラメータを含んでもよい。生成モデル決定ユニット520は、前記複数の修正された生成パラメータが所定の条件を満たすまで、前記複数の生成パラメータを反復的に修正してもよい。各反復中に、生成モデル決定ユニット520は、予備/更新された生成モデルに基づいて、推定経路のセットを生成してもよい。生成モデル決定ユニット520は、推定経路のセットを識別モデル決定ユニット530に送信して識別してもよい。さらに、生成モデル決定ユニット520は、識別結果に基づいて、複数の生成パラメータを修正してもよい。
識別モデル決定ユニット530は、識別モデルを決定するように構成されてもよい。識別モデル決定ユニット530は、予備識別モデルをトレーニングすることによって前記識別モデルを決定してもよい。前記予備識別モデルは、オンデマンドサービスシステム100のデフォルト設定であってもよく、異なる状況下で調整可能であってもよい。前記予備識別モデルは、複数の識別パラメータを含んでもよい。識別モジュール決定ユニット530は、複数の修正される識別パラメータが所定の条件を満たすまで、複数の識別パラメータを前記サンプル経路のセット及び前記推定経路のセットに基づいて反復的に修正してもよい。
生成ユニット540は、前記生成モデル及び前記識別モデルに基づいて、GANモデルを生成するように構成されてもよい。前記生成されたGANモデルは、本開示の他の箇所に開示されている任意の記憶装置(例えば、データベース150、処理エンジン112に集積された記憶モジュール(図示せず)など)に記憶されてもよい。
上記の説明は、例証のみを目的とするものであり、本開示の範囲を限定するものではないことに注意されたい。当業者であれば、本開示の教示下で複数の変形及び修正を行うことが可能である。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。例えば、トレーニングモジュール320は、前記生成モデル及び前記識別モデルに関連付けられた任意の情報を記憶するために用いられる記憶ユニット(図示せず)を含んでもよい。他の例として、トレーニングモジュール320内のユニットは、それぞれストレージサンユニット(図示せず)を含んでもよい。さらなる例として、生成モデル決定ユニット520及び識別モデル決定ユニット530は、生成モデル及び識別モデルの両方を決定してもよい単一モジュールとして集積されてもよい。
図6は、本開示のいくつかの実施形態に係るGANモデルを決定するための例示的なプロセス/方法600を示すフローチャートである。プロセス及び/又は方法600は、オンデマンドサービスシステム100によって実行されてもよい。例えば、プロセス及び/又は方法600は、ストレージROM230又はRAM240に記憶された命令セット(例えばアプリケーション)として実装されてもよい。CPU220は、命令のセットを実行してもよく、それに応じてプロセス及び/又は方法600を実施するように指示されてもよい。以下に提示される例示のプロセス/方法の動作は、例証を意図したものである。いくつかの実施形態では、前記プロセス/方法は、説明されていない1つ以上の追加の動作で、及び/又は1つ以上の論じられた動作なしで実現されてもよい。さらに、図6に示され、以下に説明されるプロセス/方法の動作の順序は、限定的なものではない。
ステップ602では、処理エンジン112は、サンプル経路のセットを取得してもよい。処理エンジン112は、本開示の他の箇所に開示されている記憶装置(例えば、データベース150、処理エンジン112に集積された記憶モジュール(図示せず)など)から前記サンプル経路のセットを取得してもよい。前記サンプル経路のセットの数は、オンデマンドサービスシステム100のデフォルト設定(例えば、256、512、1024など)であってもよく、又は異なる状況下で調整可能であってもよい。前記サンプル経路のセットは、複数の履歴注文に関連付けられたサンプル経路のセットであってもよい。
いくつかの実施形態では、前記サンプル経路のセットのそれぞれは、サンプル出発地、サンプル目的地、サンプル出発地とサンプル目的地とのリンク情報、サンプル出発時間、サンプル到着時間、サンプル経路に関連付けられた交通情報などを含んでもよい。
前記リンク情報は、前記サンプル出発地と前記サンプル目的地との間のサンプル経路内の複数のリンク(道路又は街路の区間)に関連付けられた情報を指してもよい。例えば、前記リンク情報は、複数のリンクの数、複数のリンクの距離などを含んでもよい。
前記交通情報は、複数のリンクの交通状況情報、交通信号機情報、等級情報(道路又は街路の等級)などを含んでもよい。前記交通状況情報は、交通速度、交通流、交通密度などを含んでもよい。前記交通信号機情報は、交通信号機の分布、交通信号機の数などを含んでもよい。いくつかの実施形態では、前記道路又は街路の等級は、速度制限に従って、高速道路、第1級高速道路、第2級高速道路、第3級高速道路、及び第4級高速道路などの5つの等級に分類されてもよい。いくつかの実施形態では、前記道路又は街路の等級は、地理情報に従って、国道、州道、郡道及び村道などの4つの等級に分類されてもよい。
ステップ604では、処理エンジン112は、生成モデルを生成してもよい。プロセス/方法600は、1つ以上の反復を含む反復プロセスであってもよいことに注意されたい。第1の反復では、処理エンジン112は、予備生成モデルを生成してもよい。前記予備生成モデルは、畳み込みニューラルネットワーク(CNN)モデル、再帰型ニューラルネットワーク(RNN)モデルなどを含んでもよい。前記予備生成モデルは、オンデマンドサービスシステム100のデフォルト設定であってもよく、又は異なる状況下で調整可能であってもよい。前記予備生成モデルは、1つ以上の予備生成パラメータを含んでもよい。
ステップ606では、処理エンジン112は、前記予備生成モデル及び前記サンプル経路セットに基づいて、推定経路セットを決定してもよい。前記推定経路のセットの数は、前記サンプル経路のセットの数と同じであってもよい。例えば、特定のサンプル出発地及び特定のサンプル目的地を含む特定のサンプル経路に対して、処理エンジン112は、特定のサンプル出発地から特定のサンプル目的地までの推定経路を決定してもよい。処理エンジン112は、前記推定経路を決定するために、交通情報(例えば、交通状況情報、交通信号機など)を1つのパラメータとして適用してもよい。
ステップ608では、処理エンジン112は、識別モデルを生成してもよい。前記識別モデルは、前記推定経路のセットが前記サンプル経路のセットにどれだけ近いかを示す前記推定経路のセットの平均確率値を決定するために用いられてもよい。本明細書で用いられるように、前記確率値は、0〜1の範囲内である。ステップ602に関して説明されるように、第1の反復では、処理エンジン112は、予備識別モデルを生成してもよい。前記予備識別モデルは、CNNモデル、RNNモデルなどを含んでもよい。前記予備識別モデルは、オンデマンドサービスシステム100のデフォルト設定であってもよく、又は異なる状況下で調整可能であってもよい。前記予備生成モデルは、1つ以上の予備識別パラメータを含んでもよい。
ステップ610では、処理エンジン112は、前記サンプル経路のセット及び前記推定経路のセットに基づいて、前記予備識別モデルの第1の損失関数を決定してもよい。
例えば、処理エンジン112は、以下に示す式(1)に従って、前記識別モデルの第1の損失関数を決定してもよい。
ここで、J(D)は、前記識別モデルの第1の損失関数を表してもよく(第1の反復では、以下と同様に予備識別モデルの第1の損失関数を表す)、θ(D)は、識別モデルの識別パラメータを表してもよく、θ(G)は、生成モデルの生成パラメータを表してもよく、xは、サンプル経路のセットを表してもよく、D(x)は、識別モデルに基づいて決定されたサンプル経路のセットの平均確率値を表してもよく、x〜pdataは、サンプル経路のセットの分布を表してもよく、zは、生成モデルの入力情報(例えば、サンプル出発地、サンプル目的地、交通情報など)を表してもよく、G(z)は、推定経路のセットを表してもよく、D(G(z))は、識別モデルに基づいて決定された推定経路のセットの平均確率値を表してもよく、
は、サンプル経路のセットの平均期待値を表してもよく(デフォルトでは、サンプル経路の期待値は、「1」に近似する)、Ezは、推定経路のセットの平均期待値を表してもよい(デフォルトでは、推定経路の期待値は「0」に近似する)。
ステップ612では、処理エンジン112は、第1の損失関数の値が第1の閾値より小さいか否かを決定してもよい。前記第1の閾値は、オンデマンドサービスシステム100のデフォルト設定(例えば0.5)であってもよく、又は異なる状況下で調整可能であってもよい。
前記第1の損失関数の値が前記第1の閾値未満であるという決定に応答して、処理エンジン112は、プロセス/方法600をステップ620まで実行して、前記予備識別モデルを記憶してもよい。
前記第1の損失関数が前記第1の閾値以上であるという決定に応答して、処理エンジン112は、プロセス/方法600をステップ613まで実行してもよい。ステップ613では、処理エンジン112は、前記予備識別モデルを更新してもよい。例えば、処理エンジン112は、前記予備識別モデルの1つ以上の識別パラメータを更新してもよい。処理エンジン112が前記予備識別モデルを更新した後、処理エンジン112は、前記プロセス/方法を実行してステップ608に戻り、更新された識別モデルを決定し、前記第1の損失関数の値が前記第1の閾値未満となるまで新しい反復を開始してもよい。
ステップ606に戻って、処理エンジン112が前記予備生成モデルに基づいて推定経路のセットを決定した後、処理エンジン112は、前記プロセス/方法をステップ614まで実行してもよい。ステップ614では、処理エンジン112は、前記サンプル経路のセット及び前記推定経路のセットに基づいて、前記予備生成モデルの第2の損失関数を決定してもよい。
例えば、処理エンジン112は、以下に示す式(2)に従って、前記予備生成モデルの第2の損失関数を決定してもよい。
ここで、J(G)は、前記生成モデルの前記第2の損失関数を表してもよい。
ステップ616では、処理エンジン112は、前記第2の損失関数の値が第2の閾値未満であるか否かを決定してもよい。前記第2の閾値は、オンデマンドサービスシステム100のデフォルト設定(例えば0.5)であってもよく、又は異なる状況下で調整可能であってもよい。前記第2の閾値は、前記第1の閾値と同じであっても、又は異なってもよい。
前記第2の損失関数が前記第2の閾値未満であるという決定に応答して、処理エンジン112は、前記プロセス/方法をステップ618まで実行して、前記予備生成モードを記憶してもよい。
前記第2の損失関数の値が前記第2の閾値以上であるという決定に応答して、処理エンジン112は、プロセス/方法600をステップ617まで実行してもよい。ステップ617では、処理エンジン112は、前記予備生成モデルを更新してもよい。例えば、処理エンジン112は、前記予備生成モデルの1つ以上の生成パラメータを更新してもよい。処理エンジン112が前記予備生成モデルを更新した後、処理エンジン112は、プロセス/方法600を実行してステップ604に戻り、更新された生成モデルを決定し、前記第2の損失関数の値が前記第2の閾値未満となるまで新しい反復を開始してもよい。
ステップ622では、処理エンジン112は、前記(更新された)生成モデル及び前記(更新された)識別モデルに基づいて、GANモデルを決定してもよい。処理エンジン112は、本開示の他の箇所に開示された記憶装置にGANモデルをさらに記憶してもよい。
プロセス/方法600は、反復プロセスであることに注意されたい。前記反復プロセスは、1つ以上の反復を含んでもよい。各反復の間で、処理エンジン112は、まず、前記第1の損失関数に基づいて前記識別モデルを更新し、次に、前記第2の損失関数に基づいて前記生成モデルを更新してもよい。理想的な条件では、処理エンジン112は、前記第1の損失関数及び前記第2の損失関数がナッシュ均衡に達するまで、反復プロセスを終了してもよい。本明細書で用いられるように、前記ナッシュ均衡は、前記生成モデルに基づいて生成された推定経路のセットがサンプル経路のセットと殆ど同じである均衡ポイントを指してもよい。実際の動作では、処理エンジン112は、前記第1の損失関数の値が前記第1の閾値未満であり、前記第2の損失関数の値が前記第2閾値未満となるまで、反復プロセスを終了してもよい。
上記の説明は、例証のみを目的とするものであり、本開示の範囲を限定するものではないことに注意されたい。当業者であれば、本開示の教示の下で多数の変形及び修正を行うことが可能である。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。例えば、例示的なプロセス及び/又は方法600の他の箇所に、1つ以上の他の任意のステップ(例えばキャッシングステップ)が追加されてもよい。
図7は、本開示のいくつかの実施形態に係る例示的なGANモデル700を示す概略図である。図7に示すように、前記GANモデルは、生成モデル710及び識別モデル720を含んでもよい。
生成モデル710は、推定経路のセットを生成するために用いられてもよい。前記生成された推定経路のセットは、識別モデル720に送信されて、識別されてもよい。識別モデル720は、前記サンプル経路のセットと、生成モデル710によって生成された前記推定経路のセットとを識別するために用いられてもよい。
識別モデル720は、二値分類器であってもよい。識別モデル720に対して、前記サンプル経路の期待値が「1」にほぼ等しいと定義される、すなわち、識別モデル720は、サンプル経路が実際の経路とほぼ同じであることを期待する。推定経路の期待値が「0」にほぼ等しいと定義されているときに、識別モデル720は、前記推定経路を前記サンプル経路とは全く異なる経路として識別することを期待する。推定経路に対して、識別モデル720に基づいて、範囲(0,1)内の確率値を決定してもよい。前記確率値は、特定の推定が対応するサンプル経路にどれだけ近いかを示す確率であってもよい。前記確率値が大きいほど、前記推定経路が対応するサンプル経路に近い可能性がある。
前記サンプル経路のセット及び前記推定経路のセットは、識別モデル720に基づいて比較され、前記推定経路のセットの平均確率値が決定されてもよい。前記推定経路のセットの平均確率値は、生成モデル710に送信され、生成モデル710は、それに応じて更新されてもよい。さらに、更新された生成モデル710に基づいて、更新された推定経路のセットが生成され、識別モデル720に送信されて、さらに識別されてもよい。
ステップ610及びステップ614に関連して説明したように、処理エンジン112は、サンプル経路のセットの平均期待値、推定経路のセットの平均期待値、推定経路のセットの平均確率値などに基づいて、識別モデル720の第1の損失関数及び生成モデル710の第2の損失関数を決定してもよい。処理エンジン112は、前記第1の損失関数の値が前記第1の閾値未満となり、前記第2の損失関数の値が前記第2の閾値未満となるまで、複数の反復後に生成モデル710及び識別モデル720に基づいて前記GANモデルを決定してもよい。
上記の説明は、例証のみを目的とするものであり、本開示の範囲を限定するものではないことに注意されたい。当業者であれば、本開示の教示の下で多数の変形及び修正を行うことが可能である。しかしながら、これらの変形及び修正は、本開示の範囲から逸脱するものではない。
図8は、本開示のいくつかの実施形態に従って、要求元端末130、又は提供元端末140が実装されてもよい例示的なモバイルデバイス800の例示的なハードウェア及び/又はソフトウェアコンポーネントを示す概略図である。図8に示すように、モバイルデバイス800は、通信プラットフォーム810、ディスプレイ820、グラフィック処理ユニット(GPU)830、中央処理装置(CPU)840、I/O850、メモリ860、及びストレージ890を含んでもよい。いくつかの実施形態では、システムバス又はコントローラ(図示せず)を含むが、これらに限定されない任意の他の適切なコンポーネントも、モバイルデバイス800に含まれてもよい。いくつかの実施形態では、CPU840によって実行されるために、モバイルオペレーティングシステム870(例えば、iOSTM、AndroidTM、Windows PhoneTMなど)及び1つ以上のアプリケーション780は、ストレージ890からメモリ860にロードされてもよい。アプリケーション880は、例えば、処理エンジン112からのオンデマンドサービス又は他の情報に関連する情報を受信及びレンダリングするためのブラウザ又は任意の他の適切なモバイルアプリケーションを含んでもよい。情報ストリームとのユーザ対話は、I/O850を介して実現され、ネットワーク120を介して、オンデマンドサービスシステム100の処理エンジン112及び/又は他のコンポーネントに提供されてもよい。
本開示で説明される様々なモジュール、ユニット、及びそれらの機能を実装するために、コンピュータハードウェアプラットフォームは、本明細書で説明される1つ以上の要素のハードウェアプラットフォームとして用いられてもよい。ユーザインタフェース要素を有するコンピュータは、パーソナルコンピュータ(PC)又は任意の他のタイプのワークステーション又は端末装置を実装するために用いられてもよい。適切にプログラムされる場合、コンピュータは、サーバとしても動作してもよい。
以上のように基本概念を説明してきたが、この詳細な開示を読んだ当業者には、上記の詳細な開示は、単なる例として提示されているに過ぎず、限定的ではないことは明らかであろう。本明細書には明示的に述べられていないが、当業者を対象として様々な改変、改良、及び修正が想定可能である。これらの改変、改良、及び修正は、本開示によって示唆されることが意図されており、本開示の例示的な実施形態の精神及び範囲内にある。
さらに、所定の用語が、本開示の実施形態を説明するために使用されている。例えば、「一実施形態」、「実施形態」及び/又は「いくつかの実施形態」という用語は、この実施形態に関連して説明される特定の特徴、構造又は特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の様々な部分における「実施形態」又は「一実施形態」又は「代替実施形態」の2つ以上の言及は、必ずしもすべてが同一の実施形態を指しているわけではないことを強調し、それを理解するものとする。さらに、特定の特徴、構造、又は特性は、本開示の1つ以上の実施形態において適切に組み合わせられてもよい。
さらに、本開示の態様は、本明細書において、任意の新規かつ有用なプロセス、機械、製造、又は組成物、又はそれらの新規で有用な改善を含む、多くの特許性のある種類又は文脈のいずれかで例示及び説明されることが可能であることが当業者に理解されるであろう。したがって、本開示の態様は、完全にハードウェア、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェアとハードウェアとの組み合わせによる実装により実装されてもよく、これらは、本明細書では、一般に「ユニット」、「モジュール」、又は「システム」と称されてもよい。さらに、本開示の態様は、具現化されたコンピュータ可読プログラムコードを有する1つ以上のコンピュータ可読媒体に具現化されたコンピュータプログラム製品の形態をとることができる。
コンピュータ可読信号媒体は、例えば、ベースバンドに、又は搬送波の一部として組み込まれたコンピュータ可読プログラムコードを有する伝搬データ信号を含んでもよい。このような伝搬信号は、電磁気、光学など、又はそれらの任意の適切な組み合わせを含む様々な形態のいずれかを用いてもよい。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置もしくはデバイスによって用いられるか、又はこれらに関連させて使用するためのプログラムを通信、伝搬又は伝送し得る任意のコンピュータ可読媒体であってもよい。コンピュータ可読信号媒体上に具現化されたプログラムコードは、無線、有線、光ファイバケーブル、RFなど、又はこれらの任意の適切な組み合わせを含む任意の適切な媒体を使用して送信されてもよい。
本開示の態様の動作を実行するコンピュータプログラムコードは、Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB、NET、Pythonなどのオブジェクト指向プログラミング言語、「C」プログラミング言語、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAPなどの従来の手続き型プログラミング言語、Python、Ruby、及びGroovyなどの動的プログラミング言語、又は他のプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されてもよい。プログラムコードは、完全にユーザのコンピュータ上で、部分的にはユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、又は完全にリモートコンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、又は接続は、外部コンピュータ(例えば、インターネットサービスプロバイダを使用してインターネットを介して)もしくはクラウドコンピューティング環境で行われるか、又はサービスとしてのソフトウェア(SaaS)などのようなサービスとして提供されてもよい。
さらに、処理要素もしくはシーケンス、又はそれに対する数、文字、もしくは他の名称の使用の、記載された順序は、請求項に特定され得る順序を除き、請求された処理及び方法を任意の順序に限定することを意図するものではない。上記の開示は、本開示の様々な有用な実施形態であると現在考えられる様々な例を通して論じているが、そのような詳細事項はその目的のみのためになされているにすぎず、添付の請求項は、開示される実施形態に限定されず、むしろ、開示される実施形態の精神及び範囲内にある変形例及び均等な構成を包含するように意図されることが理解されるであろう。例えば、上述した様々な構成要素の実装は、ハードウェア装置で具体化され得るが、ソフトウェアのみのソリューションとして、例えば、既存のサーバ又はモバイルデバイス上にインストールとして実装されてもよい。
同様に、本開示の実施形態の前述の説明では、1つ以上の様々な実施形態の理解に資するように本開示を簡素化する目的で、様々な特徴が単一の実施形態、図、又はその説明にまとめられることがあることが理解されるであろう。しかしながら、本開示の方法は、特許請求された主題が各請求項において明示的に記載されたものより多くの特徴を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、特許請求された主題は、前述の単一の開示される実施形態のすべての特徴よりも少ない範囲にある可能性がある。