以下の詳細な説明は、添付の図面を参照する。可能な限り、図面および以下の説明では、同一または類似の部分を参照するために、同一の参照番号が使用される。いくつかの例示的な実施形態が本明細書で説明されるが、修正、適応、および他の実装が可能である。例えば、置換、追加、または修正が、図面に示された構成要素およびステップに行われてもよく、本明細書に記載された例示的な方法は、開示された方法にステップを置換、並べ替え、除去、または追加することによって修正されてもよい。したがって、以下の詳細な説明は、開示された実施形態および実施例に限定されない。むしろ、本発明の適切な範囲は、添付の特許請求の範囲によって定義される。
本開示の実施形態は、遺伝的アルゴリズムを使用して、アウトバウンドフローをシミュレートし、製品の割り当てを最適化するように構成されたシステムおよび方法を対象とする。
図1Aを参照すると、出荷、輸送、および物流動作を可能にする通信のためのコンピュータ化されたシステムを含むシステムの例示的な実施形態を示す概略ブロック図100が示されている。図1Aに示すように、システム100は、様々なシステムを含むことができ、その各々は、1つまたは複数のネットワークを介して互いに接続することができる。システムはまた、例えばケーブルを使用して、直接接続を介して互いに接続されてもよい。図示のシステムは、出荷権限技術(Shipment authority technology:SAT)システム101、外部フロントエンドシステム103、内部フロントエンドシステム105、輸送システム107、モバイルデバイス107A、107B、および107C、売り手ポータル109、出荷および注文追跡(SOT)システム111、フルフィルメント(履行)最適化(Fulfillment optimization:FO)システム113、フルフィルメントメッセージングゲートウェイ(Fulfillment messaging gateway:FMG)115、サプライチェーン管理(Supply chain management:SCM)システム117、労働力システム119、モバイルデバイス119A、119B、および119C(フルフィルメントセンタ(Fulfilment center:FC)200の内部にあるものとして図示)、第三者フルフィルメントシステム121A、121B、および121C、フルフィルメントセンタ許可システム(FC Auth)123、ならびに労務管理システム(Labor management system:LMS)125を含む。
いくつかの実施形態では、SATシステム101は、注文ステータスおよび配信ステータスを監視するコンピュータシステムとして実装されてもよい。例えば、SATシステム101は、注文がその約束納品日(Promised delivery date:PDD)を過ぎているかどうかを判定することができ、新しい注文を開始すること、未納品注文のアイテムを再出荷すること、未納品注文をキャンセルすること、注文顧客とのコンタクトを開始することなどを含む適切なアクションをとることができる。SATシステム101はまた、出力(特定の期間中に出荷されたパッケージの数など)および入力(出荷に使用するために受け取った空のボール紙箱の数など)を含む他のデータを監視することもできる。また、SATシステム101は、システム100内の異なるデバイス間のゲートウェイとして機能し、外部フロントエンドシステム103およびFOシステム113などのデバイス間の通信(例えば、ストアアンドフォワードまたは他の技術を使用する)を可能にしてもよい。
外部フロントエンドシステム103は、いくつかの実施形態では、外部ユーザがシステム100内の1つまたは複数のシステムと対話することを可能にするコンピュータシステムとして実装することができる。例えば、システム100がシステムのプレゼンテーションを可能にして、ユーザがアイテムの注文を行うことを可能にする実施形態では、外部フロントエンドシステム103は、検索要求を受信し、アイテムページを提示し、支払い情報を要請するウェブサーバとして実装されてもよい。例えば、外部フロントエンド・システム103は、Apache HTTPサーバ、Microsoftインターネット・インフォメーション・サービス、NGINXなどのソフトウェアを実行するコンピュータまたはコンピュータとして実現することができる。他の実施形態では、外部フロントエンドシステム103は、外部デバイス(例えば、モバイルデバイス102Aまたはコンピュータ102B)からの要求を受信および処理し、それらの要求に基づいてデータベースおよび他のデータストアから情報を取得し、取得された情報に基づいて受信された要求への応答を提供するように設計されたカスタムウェブサーバソフトウェアを実行することができる。
いくつかの実施形態では、外部フロントエンドシステム103は、ウェブキャッシングシステム、データベース、検索システム、または支払いシステムのうちの1つまたは複数を含むことができる。一態様では、外部フロントエンドシステム103は、これらのシステムのうちの1つまたは複数を備えることができ、別の態様では、外部フロントエンドシステム103は、これらのシステムのうちの1つまたは複数に接続されたインターフェース(たとえば、サーバ間、データベース間、または他のネットワーク接続)を備えることができる。
図1B、図1C、図1D、および図1Eによって示されるステップの例示的なセットは、外部フロントエンドシステム103のいくつかの動作を説明するのに役立つであろう。外部フロントエンドシステム103は、提示および/または表示のために、システム100内のシステムまたはデバイスから情報を受信することができる。例えば、外部フロントエンドシステム103は、検索結果ページ(Search result page:SRP)(例えば、図1B)、単一詳細ページ(Single display page:SDP)(例えば、図1C)、カードページ(例えば、図1D)、または注文ページ(例えば、図1E)を含む1つ以上のウェブページをホストまたは提供することができる。ユーザデバイス(例えば、モバイルデバイス102Aまたはコンピュータ102Bを使用する)は、外部フロントエンドシステム103にナビゲートし、サーチボックスに情報を入力することによってサーチを要求することができる。外部フロントエンド・システム103は、システム100内の1つまたは複数のシステムから情報を要求することができる。例えば、外部フロントエンドシステム103は、検索要求を満たす情報をFOシステム113に要求することができる。外部フロントエンドシステム103はまた、検索結果に含まれる各製品について、約束納品日または「PDD」を要求し、(FOシステム113から)受信することができる。PDDは、いくつかの実施形態では、製品を含むパッケージがいつユーザの所望の場所に到着するであろうかか、または製品が特定の期間内に、例えば、1日の終わり(午後11時59分)までに注文された場合、ユーザの所望の場所に配達されることを約束される日付の推定値を表すことができる(PDDは、FOシステム113に関して以下でさらに説明される)。
外部フロントエンドシステム103は、情報に基づいてSRP (例えば、図1B)を準備することができる。SRPは、検索要求を満たす情報を含むことができる。例えば、これは、検索要求を満たす製品の写真を含むことができる。SRPはまた、各製品のそれぞれの価格、または各製品の強化された配送オプション、PDD、重量、サイズ、オファー、割引などに関する情報を含むことができる。外部フロントエンドシステム103は、(例えば、ネットワークを介して)要求側ユーザデバイスにSRPを送信することができる。
次いで、ユーザデバイスは、例えば、ユーザインターフェースをクリックまたはタップすることによって、または別の入力デバイスを使用して、SRP上で表される製品を選択することによって、SRPから製品を選択することができる。ユーザ・デバイスは、選択された製品に関する情報の要求を編成(formulate)し、それを外部フロントエンド・システム103に送ることができる。これに応答して、外部フロントエンドシステム103は、選択された製品に関する情報を要求することができる。例えば、情報は、それぞれのSRP上の製品について提示される情報を超える追加の情報を含むことができる。これは、例えば、賞味期限、原産国、重量、サイズ、パッケージ内のアイテムの数、取扱説明書、または製品に関する他の情報を含むことができる。また、情報は、(例えば、この製品および少なくとも1つの他の製品を購入した顧客のビッグデータおよび/または機械学習分析に基づく)類似の製品に対する推奨、頻繁に質問される質問に対する回答、顧客からのレビュー、製造業者情報、写真などを含むことができる。
外部フロントエンドシステム103は、受信した製品情報に基づいてSDP (単一詳細ページ)(例えば、図1C)を準備することができる。SDPは、「今すぐ買う」ボタン、「カードに追加する」ボタン、数量フィールド、アイテムの写真などの他の対話型要素も含むことができる。SDPは、製品を提供する売り手のリストをさらに含むことができる。リストは、各売り手が提供する価格に基づいて順序付けられてもよく、その結果、最低価格で製品を販売することを提案する売り手は、最上位にリストされてもよい。リストは、最高ランクの売り手が最上位にリストされるように、売り手ランキングに基づいて順序付けらてもよい。売り手ランキングは、例えば、約束されたPDDを満たす売り手の過去の実績を含む、複数の要因に基づいて定式化されてもよい。外部フロントエンドシステム103は、(例えば、ネットワークを介して)要求側ユーザデバイスにSDPを配信することができる。
要求ユーザデバイスは、製品情報をリストするSDPを受信してもよい。その後、SDPを受信すると、ユーザデバイスはSDPと対話することができる。例えば、要求ユーザ装置のユーザは、SDP上の「カートに入れる」ボタンをクリックするか、または他の方法で対話することができる。これは、ユーザに関連付けられたショッピングカートに製品を追加する。ユーザ装置は、ショッピングカートに製品を追加するためのこの要求を外部フロントエンドシステム103に送信することができる。
外部フロントエンドシステム103は、カートページ(例えば、図1D)を生成することができる。カートページは、いくつかの実施形態では、ユーザが仮想「ショッピングカート」に追加した製品をリストし、ユーザデバイスは、SRP、SDP、または他のページ上のアイコンをクリックするか、または他の方法で対話することによって、カートページを要求してもよい。いくつかの実施形態では、カートページは、ユーザがショッピングカートに追加したすべての製品、ならびに各製品の数量、各製品毎の価格、関連する数量に基づく各製品の価格、PDDに関する情報、配送方法、配送コスト、ショッピングカート内の製品を修正するためのユーザインターフェース要素(例えば、数量の削除または修正)、他の製品を注文するためのオプション、または製品の定期的な配送を設定するためのオプション、利息支払いを設定するためのオプション、購入に進むためのユーザインターフェース要素などのカート内の製品に関する情報をリストすることができる。ユーザデバイスのユーザは、ショッピングカート内の製品の購入を開始するために、ユーザインターフェース要素(例えば、「今すぐ買う」と読むボタン)をクリックするか、さもなければユーザインターフェース要素と対話することができる。そうすると、ユーザ・デバイスは、購入を開始するためにこの要求を外部フロント・エンド・システム103に送信することができる。
外部フロントエンドシステム103は、購入を開始する要求の受信に応答して、注文ページ(例えば、図1E)を生成することができる。注文ページは、いくつかの実施形態では、ショッピングカートからアイテムを再リストし、支払いおよび出荷情報の入力を要求する。例えば、注文ページは、ショッピングカート内のアイテムの購入者に関する情報(例えば、名前、住所、電子メールアドレス、電話番号)、受取人に関する情報(例えば、名前、住所、電話番号、配達情報)、出荷情報(例えば、配達および/または集荷の速度/方法)、支払い情報(例えば、クレジットカード、銀行振込、小切手、格納クレジット)、現金受領を要求するためのユーザインターフェース要素(例えば、税務目的のための)などを要求するセクションを含むことができる。外部フロントエンドシステム103は、注文ページをユーザデバイスに送信することができる。
ユーザデバイスは、オーダページに情報を入力し、その情報を外部フロントエンドシステム103に送信するユーザインタフェース要素をクリックするか、または他の方法で対話することができる。そこから、外部フロントエンドシステム103は、システム100内の異なるシステムに情報を送信して、ショッピングカート内の製品を用いた新しい注文の作成および処理を可能にすることができる。
いくつかの実施形態では、外部フロントエンドシステム103は、売り手が注文に関する情報を送受信することを可能にするようにさらに構成されてもよい。
内部フロントエンドシステム105は、いくつかの実施形態では、内部ユーザ(例えば、システム100を所有し、操作し、またはリースする組織の従業員)がシステム100内の1つまたは複数のシステムと対話することを可能にするコンピュータシステムとして実装され得る。例えば、ネットワーク101がシステムのプレゼンテーションを可能にして、ユーザがアイテムの注文を行うことを可能にする実施形態では、内部フロントエンドシステム105は、内部ユーザが注文に関する診断および統計情報を見ること、アイテム情報を修正すること、または注文に関する統計をレビューすることを可能にするウェブサーバとして実装されてもよい。例えば、内部フロントエンド・システム105は、Apache HTTPサーバ、Microsoftインターネット・インフォメーション・サービス、NGINXなどのソフトウェアを実行するコンピュータまたはコンピュータとして実現することができる。他の実施形態では、内部フロントエンドシステム105は、システム100に示されているシステムまたは装置(および図示されていない他の装置)からの要求を受信および処理し、それらの要求に基づいてデータベースおよび他のデータストアから情報を取得し、取得された情報に基づいて受信された要求に応答を提供するように設計されたカスタムウェブサーバソフトウェアを実行してもよい。
いくつかの実施形態では、内部フロントエンドシステム105は、ウェブキャッシングシステム、データベース、検索システム、支払いシステム、分析システム、注文監視システムなどのうちの1つまたは複数を含むことができる。一態様では、内部フロントエンドシステム105は、これらのシステムのうちの1つまたは複数を備えることができ、別の態様では、内部フロントエンドシステム105は、これらのシステムのうちの1つまたは複数に接続されたインターフェース(たとえば、サーバ間、データベース間、または他のネットワーク接続)を備えることができる。
輸送システム107は、いくつかの実施形態では、システム100内のシステムまたはデバイスとモバイルデバイス107A~107Cとの間の通信を可能にするコンピュータシステムとして実装され得る。輸送システム107は、いくつかの実施形態では、1つまたは複数のモバイルデバイス107A~107C(例えば、携帯電話、スマートフォン、PDAなど)から情報を受信することができる。例えば、いくつかの実施形態では、モバイルデバイス107A~107Cは、配達員によって操作されるデバイスを備えてもよい。配達作業員は、正社員、一時社員、またはシフト社員であってもよく、モバイルデバイス107A~107Cを利用して、ユーザによって注文された製品を含む荷物の配達を行うことができる。例えば、荷物を配達するために、配達作業者は、どの荷物を配達すべきか、およびどこに配達すべきかを示す通知をモバイルデバイス上で受信することができる。配達作業者は、配達場所に到着すると、荷物を(例えば、トラックの後ろに、または荷物のクレートに)配置し、モバイルデバイスを使用して荷物上の識別子(例えば、バーコード、画像、テキストストリング、RFIDタグなど)に関連するデータをスキャンまたは他の方法で取り込み、荷物を(例えば、前面ドアに置いたままにし、セキュリティガードを付けたままにし、受取人に渡すなどによって)配達することができる。さらに、モバイル機器107A-Cは、モバイル機器107A-Cが輸送システム107と通信することを可能にするアプリケーション及び/又は通信ソフトウェアを実行し、モバイル機器107A-Cに含まれる表示装置を介してインターフェース上にコンテンツを生成し表示することができる。例えば、モバイルデバイス107A~Cは、配達関連情報を輸送システム107に送信するためにモバイルアプリケーションを実行することができる。いくつかの実施形態では、配達作業者は、荷物の写真(複数可)をキャプチャすることができ、および/またはモバイルデバイスを使用して署名を取得することができる。モバイルデバイスは、例えば、時間、日付、GPS位置、写真、配達作業者に関連付けられた識別子、モバイルデバイスに関連付けられた識別子などを含む、配達に関する情報を含む通信を輸送システム107に送信することができる。輸送システム107は、システム100内の他のシステムによるアクセスのために、この情報をデータベース(図示せず)に記憶することができる。輸送システム107は、いくつかの実施形態では、この情報を使用して、特定の荷物の位置を示す追跡データを準備し、他のシステムに送信することができる。
いくつかの実施形態では、あるユーザは、1つの種類のモバイルデバイスを使用することができる(例えば、正社員は、バーコードスキャナ、スタイラス、および他のデバイスなどのカスタムハードウェアを有する専用のPDAを使用することができる)が、他のユーザは、他の種類のモバイルデバイスを使用することができる(例えば、一時的またはシフト労働者は、既製のモバイル電話および/またはスマートフォンを利用することができる)。
いくつかの実施形態では、輸送システム107は、ユーザを各デバイスに関連付けることができる。例えば、輸送システム107は、ユーザ(例えば、ユーザ識別子、従業員識別子、または電話番号によって表される)と移動装置(例えば、国際移動装置識別子(IMEI)、国際移動加入識別子(IMSI)、電話番号、汎用一意識別子(UUID)、またはグローバル一意識別子(GUID)によって表される)との間の関連付けを記憶することができる。輸送システム107は、とりわけ、作業者の位置、作業者の効率、または作業者の速度を決定するために、この関連付けを、配達時に受信されたデータと共に使用して、データベースに格納されたデータを分析することができる。
売り手ポータル109は、いくつかの実施形態では、売り手または他の外部エンティティがシステム100内の1つまたは複数のシステムと電子的に通信することを可能にするコンピュータシステムとして実装され得る。例えば、売り手は、コンピュータシステム(図示せず)を利用して、売り手が売り手ポータル109を使用してシステム100を通して売りたい製品について、製品情報、注文情報、連絡先情報などをアップロードまたは提供することができる。
いくつかの実施形態では、出荷および注文追跡システム111は、(例えば、デバイス102A~102Bを使用するユーザによって)顧客によって注文された製品を含むパッケージの位置に関する情報を受信し、格納し、転送するコンピュータシステムとして実装され得る。いくつかの実施形態では、出荷および注文追跡システム111は、顧客によって注文された製品を含むパッケージを配送する出荷会社によって運営されるウェブサーバ(図示せず)からの情報を要求または格納することができる。
いくつかの実施形態では、出荷および注文追跡システム111は、システム100に示されるシステムからの情報を要求し、記憶することができる。例えば、出荷及び注文追跡システム111は、輸送システム107から情報を要求することができる。上述のように、輸送システム107は、ユーザ(例えば、配達作業員)または車両(例えば、配達トラック)のうちの1つ以上に関連付けられた1つ以上のモバイルデバイス107A~107C(例えば、携帯電話、スマートフォン、PDAなど)から情報を受信してもよい。いくつかの実施形態では、出荷および注文追跡システム111はまた、労働力管理システム(WMS)119から情報を要求して、フルフィルメントセンター(例えば、フルフィルメントセンター200)内の個々の製品の位置を決定することができる。出荷および注文追跡システム111は、輸送システム107またはWMS 119のうちの1つまたは複数からデータを要求し、それを処理し、要求に応じてそれをデバイス(たとえば、ユーザデバイス102Aおよび102B)に提示することができる。
いくつかの実施形態では、フルフィルメント最適化(FO)システム113は、他のシステム(例えば、外部フロントエンドシステム103および/または出荷および注文追跡システム111)からの顧客注文に関する情報を記憶するコンピュータシステムとして実装されてもよい。FOシステム113はまた、特定のアイテムがどこに保持または格納されるかを記述する情報を格納してもよい。たとえば、顧客が注文した特定のアイテムは1つのフルフィルメントセンターにのみ保存され、他の特定のアイテムは複数のフルフィルメントセンターに保存される場合がある。さらに他の実施形態では、特定のフルフィルメントセンターは、特定のセットのアイテム(例えば、生鮮食品または冷凍製品)のみを格納するように設計されてもよい。FOシステム113は、この情報ならびに関連する情報(例えば、数量、サイズ、受領日、有効期限など)を格納する。
FOシステム113はまた、各製品について対応するPDD (約束納期)を計算することができる。PDDは、いくつかの実施形態では、1つまたは複数の要因に基づくことができる。例えば、FOシステム113は、製品の過去の需要(例えば、その製品がある期間中に何回注文されたか)、製品の予想需要(例えば、来るべき期間中にその製品を注文するために何人の顧客が予想されるか)、ある期間中にいくつの製品が注文されたかを示すネットワーク全体の過去の需要、来るべき期間中にいくつの製品が注文されることが予想されるかを示すネットワーク全体の予想需要、各フルフィルメントセンタ200に格納された製品の1つまたは複数のカウント、その製品の予想または現在の注文などに基づいて、製品のPDDを計算することができる。
いくつかの実施形態では、FOシステム113は、定期的に(例えば、1時間ごとに)各製品のPDDを決定し、それをデータベースに格納して、検索または他のシステム(例えば、外部フロントエンドシステム103、SATシステム101、出荷および注文追跡システム111)に送信することができる。他の実施形態では、FOシステム113は、1つまたは複数のシステム(例えば、外部フロントエンドシステム103、SATシステム101、出荷および注文追跡システム111)から電子要求を受信し、オンデマンドでPDDを計算することができる。
フルフィルメントメッセージングゲートウェイ115は、いくつかの実施形態では、FOシステム113などのシステム100内の1つ以上のシステムから1つのフォーマットまたはプロトコルで要求または応答を受信し、それを別のフォーマットまたはプロトコルに変換し、変換されたフォーマットまたはプロトコルで、WMS 119または3パーティフルフィルメントシステム121A、121B、または121Cなどの他のシステムに転送するコンピュータシステムとして実装することができる。
サプライチェーン管理(SCM)システム117は、いくつかの実施形態では、予測機能を実行するコンピュータシステムとして実装することができる。例えば、SCMシステム117は、例えば、製品に対する過去の需要、製品に対する予想される需要、ネットワーク全体の過去の需要、ネットワーク全体の予想される需要、各フルフィルメントセンタ200に格納されたカウント製品、各製品に対する予想または現在の注文などに基づいて、特定の製品に対する需要のレベルを予測することができる。この予測されたレベルおよびすべてのフルフィルメントセンターにわたる各製品の量に応答して、SCMシステム117は、特定の製品に対する予測された需要を満たすのに十分な量を購入し、在庫するための1つまたは複数の購入注文を生成することができる。
労働力管理システム(WMS)119は、ある実施形態では、ワークフローを監視するコンピュータシステムとして実装されてもよい。例えば、WMS 119は、個別のイベントを示すイベントデータを個々のデバイス(例えば、デバイス107A~107Cまたは119A~119C)から受信することができる。例えば、WMS 119は、パッケージを走査するためにこれらの装置の1つの使用を示すイベントデータを受信してもよい。フルフィルメントセンター200および図2に関して以下で説明するように、フルフィルメントプロセス中に、パッケージ識別子(例えば、バーコードまたはRFIDタグデータ)を、特定の段階で機械によってスキャンまたは読み取ることができる(例えば、自動またはハンドヘルドバーコードスキャナ、RFIDリーダ、高速カメラ、タブレット119A、モバイルデバイス/PDA 119B、コンピュータ119Cなどのデバイス)。WMS 119は、パッケージ識別子、時間、日付、位置、ユーザ識別子、またはその他の情報と共に、パッケージ識別子の走査または読取りを示す各イベントを対応するデータベース(図示せず)に格納し、この情報を他のシステム(例えば、出荷および注文追跡システム111)に提供することができる。
WMS 119は、いくつかの実施形態では、1つまたは複数のデバイス(たとえば、デバイス107A~107Cまたは119A~119C)をシステム100に関連する1つまたは複数のユーザに関連付ける情報を記憶することができる。例えば、いくつかの状況では、ユーザ(パートまたはフルタイムの従業員など)は、ユーザがモバイルデバイスを所有するモバイルデバイス(例えば、モバイルデバイスはスマートフォンである)に関連付けられ得る。他の状況では、ユーザは、ユーザがモバイルデバイスを一時的に保管しているという点で、モバイルデバイスに関連付けられてもよい(例えば、ユーザは、日の始めにモバイルデバイスをチェックアウトし、日中にモバイルデバイスを使用し、日の終わりにモバイルデバイスを戻してもよい)。
WMS 119は、いくつかの実施形態では、システム100に関連する各ユーザの作業ログを維持することができる。例えば、WMS 119は、任意の割り当てられたプロセス(例えば、トラックのアンロード、ピックゾーンからのアイテムのピッキング、リビン壁工事(rebin wall work)、アイテムのパッキング)、ユーザ識別子、位置(例えば、フルフィルメントセンタ200内のフロアまたはゾーン)、従業員によってシステムを通って移動されたユニットの数(例えば、ピッキングされたアイテムの数、パッキングされたアイテムの数)、デバイス(例えば、デバイス119A~119C)に関連付けられた識別子などを含む、各従業員に関連付けられた情報を記憶することができる。いくつかの実施形態では、WMS 119は、デバイス119A~119C上で動作するタイムキーピングシステムなどのタイムキーピングシステムからチェックインおよびチェックアウト情報を受信することができる。
第三者フルフィルメント(3PL)システム121A~121Cは、いくつかの実施形態では、ロジスティクスおよび製品のサードパーティプロバイダに関連するコンピュータシステムを表す。例えば、(図2に関して以下に説明するように)いくつかの製品がフルフィルメントセンター200に保管されている間、他の製品はオフサイトで保管されてもよく、オンデマンドで生産されてもよく、またはそうでなければフルフィルメントセンター200に保管するために利用できなくてもよい。3PLシステム121A~121Cは、FOシステム113から(例えば、FMG 115を介して)注文を受信するように構成されてもよく、製品および/またはサービス(例えば、配送または設置)を顧客に直接提供してもよい。いくつかの実施形態では、3PLシステム121A~121Cのうちの1つまたは複数は、システム100の一部とすることができ、他の実施形態では、3PLシステム121A~121Cのうちの1つまたは複数は、システム100の外部(例えば、サードパーティプロバイダによって所有または運営される)とすることができる。
いくつかの実施形態では、フルフィルメントセンターオースシステム(FCオース)123は、様々な機能を有するコンピュータシステムとして実装されてもよい。例えば、いくつかの実施形態では、FC Auth 123は、システム100内の1つまたは複数の他のシステムのためのシングルサインオン(SSO)サービスとして働くことができる。例えば、FC認証123は、ユーザが内部フロントエンドシステム105を介してログインすることを可能にし、ユーザが出荷および注文追跡システム111でリソースにアクセスする同様の特権を有することを決定し、ユーザが2回目のログインプロセスを必要とせずにそれらの特権にアクセスすることを可能にする。FCオース123は、他の実施形態では、ユーザ(例えば、従業員)が特定のタスクに自分自身を関連付けることを可能にすることができる。例えば、従業員の中には、電子デバイス(デバイス119A~119Cなど)を持たないことがあり、代わりに、1日のコース中に、フルフィルメントセンタ200内でタスクからタスクへ、およびゾーンからゾーンへ移動することがある。FC Auth 123は、それらの従業員が、彼らがどのタスクを実行しているか、および彼らが異なる時刻にどのゾーンにいるかを示すことを可能にするように構成され得る。
労働管理システム(LMS)125は、いくつかの実施形態では、従業員(フルタイムおよびパートタイムの従業員を含む)のための出勤および残業情報を記憶するコンピュータシステムとして実装されてもよい。例えば、LMS 125は、FC Auth 123、WMA 119、デバイス119A~119C、輸送システム107、および/またはデバイス107A~107Cから情報を受信することができる。
図1Aに示される特定の構成は、単なる例である。例えば、図1Aは、FOシステム113に接続されたFCオースシステム123を示すが、全ての実施形態がこの特定の構成を必要とするわけではない。実際、いくつかの実施形態では、システム100内のシステムは、インターネット、イントラネット、WAN (ワイドエリアネットワーク)、MAN (メトロポリタンエリアネットワーク)、IEEE 802.11a/b/g/n規格に準拠する無線ネットワーク、専用線などを含む1つまたは複数の公衆またはプライベートネットワークを介して互いに接続され得る。いくつかの実施形態では、システム100内のシステムの1つ以上は、データセンター、サーバファームなどに実装された1つ以上の仮想サーバとして実装されてもよい。
図2は、フルフィルメントセンター200を示す。フルフィルメントセンター200は、注文時に顧客に出荷するためのアイテムを格納する物理的位置の一例である。フルフィルメントセンタ(FC)200は、複数のゾーンに分割することができ、各ゾーンは図2に示されている。いくつかの実施形態では、これらの「ゾーン」は、アイテムを受け取り、アイテムを格納し、アイテムを取り出し、アイテムを出荷するプロセスの異なる段階間の仮想分割と考えることができ、したがって、「ゾーン」は図2に示されているが、ゾーンの他の分割も可能であり、図2のゾーンは、いくつかの実施形態では、省略、複製、または修正することができる。
インバウンドゾーン203は、図1Aのシステム100を使用して製品を販売したい売り手からアイテムが受け取られるFC 200の領域を表す。例えば、売り手は、トラック201を使用してアイテム202A及び202Bを配送することができる。アイテム202Aは、それ自体の出荷パレットを占有するのに十分な大きさの単一のアイテムを表すことができ、アイテム202Bは、スペースを節約するために同じパレット上に一緒に積み重ねられたアイテムのセットを表すことができる。
作業者は、インバウンドゾーン203内のアイテムを受け取ることができ、任意選択で、コンピュータシステム(図示せず)を使用してアイテムの損傷および正しさをチェックすることができる。例えば、作業者は、コンピュータシステムを使用して、アイテム202Aおよび202Bの数量をアイテムの注文数量と比較することができる。数量が一致しない場合、その作業者は、アイテム202Aまたは202Bのうちの1つまたは複数を拒否することができる。量が一致した場合、作業者はそれらのアイテム(例えば、人形、手すり、フォークリフト、または手動で使用)を、ゾーン205を緩衝するように動かすことができる。バッファゾーン205は、例えば、予測される需要を満たすのに十分な量のアイテムがピッキングゾーン内にあるため、ピッキングゾーン内で現在必要とされていないアイテムのための一時保管領域であってもよい。いくつかの実施形態では、フォークリフト206は、物品をバッファゾーン205の周り、およびインバウンドゾーン203とドロップゾーン207との間で移動させるように動作する。ピッキングゾーンにアイテム202Aまたは202Bが必要な場合(例えば、予想される需要のため)、フォークリフトは、アイテム202Aまたは202Bを落下ゾーン207に移動させることができる。
ドロップゾーン207は、アイテムがピッキングゾーン209に移動される前にアイテムを格納するFC 200の領域であってもよい。ピッキングタスクに割り当てられた作業者(「ピッカー」)は、ピッキングゾーン内のアイテム202Aおよび202Bに接近し、ピッキングゾーンのバーコードをスキャンし、モバイルデバイス(例えば、デバイス119B)を使用してアイテム202Aおよび202Bに関連付けられたバーコードをスキャンすることができる。次いで、ピッカーは、アイテムをピッキング・ゾーン209に(例えば、カートの上に置くか、またはそれを運ぶことによって)取り込むことができる。
ピッキングゾーン209は、アイテム208が保管(storage)ユニット210に保管されるFC 200の領域であってもよい。いくつかの実施形態では、保管ユニット210は、物理的な棚、本棚、箱、運搬箱、冷蔵庫、冷凍庫、冷蔵庫などのうちの1つまたは複数を含むことができる。いくつかの実施形態では、ピッキングゾーン209は、複数のフロアに編成されてもよい。いくつかの実施形態では、作業者または機械は、例えば、フォークリフト、エレベータ、コンベヤベルト、カート、ハンドトラック、ドリー、自動ロボットまたは装置、あるいは手動を含む複数の方法で、物品をピッキングゾーン209に移動させることができる。例えば、ピッカーは、アイテム202Aおよび202Bをドロップゾーン207内のハンドトラックまたはカート上に置き、アイテム202Aおよび202Bをピッキングゾーン209まで歩くことができる。
ピッカーは、保管ユニット210上の特定のスペースのような、ピッキングゾーン209内の特定のスポットにアイテムを配置する(または「収納する」)命令を受け取ることができる。例えば、ピッカーは、モバイルデバイス(例えば、デバイス119B)を使用してアイテム202Aをスキャンすることができる。デバイスは、例えば、通路、棚、および位置を示すシステムを使用して、ピッカーがアイテム202Aを収納すべき場所を示すことができる。次に、デバイスは、その位置にアイテム202Aを格納する前に、その位置でバーコードをスキャンするようにピッカーに促すことができる。装置は、図1のWMS 119のようなコンピュータシステムに(例えば、無線ネットワークを介して)データを送信し、装置119Bを使用するユーザによってアイテム202Aがその場所に格納されたことを示すことができる。
ユーザが注文を出すと、ピッカは、保管ユニット210から1つまたは複数のアイテム208を取り出すために、デバイス119B上で命令を受け取ることができる。ピッカーは、アイテム208を取り出し、アイテム208上のバーコードをスキャンし、それを搬送機構214上に置くことができる。搬送機構214はスライドとして表されているが、いくつかの実施形態では、搬送機構は、コンベヤベルト、エレベータ、カート、フォークリフト、ハンドトラック、台車、カートなどのうちの1つまたは複数として実施することができる。次に、アイテム208は、パッキングゾーン211に到着することができる。
パッキングゾーン211は、アイテムがピッキングゾーン209から受け取られ、最終的に顧客に出荷するためにボックスまたはバッグにパッキングされるFC 200の領域であってもよい。パッキングゾーン211では、アイテムを受け取るように割り当てられた作業者(「リビン(rebin)作業者」)は、ピッキングゾーン209からアイテム208を受け取り、それがどの注文に対応するかを決定することができる。例えば、リビン作業者は、アイテム208上のバーコードをスキャンするために、コンピュータ119Cなどのデバイスを使用することができる。コンピュータ119Cは、どの注文アイテム208が関連付けられているかを視覚的に示すことができる。これは、例えば、注文に対応する壁216上のスペースまたは「セル」を含むことができる。注文が完了すると(例えば、セルが注文のためのすべてのアイテムを含むため)、リビン作業者は、注文が完了したことをパッキング作業者(または「パッカー」)に示すことができる。パッカーは、セルからアイテムを取り出し、それらを出荷のために箱または袋に入れることができる。その後、パッカーは、例えば、フォークリフト、カート、ドリー、ハンドトラック、コンベヤーベルトを介して、又は他の方法で、箱又はバッグをハブゾーン213に送ることができる。
ハブゾーン213は、パッキングゾーン211から全てのボックスまたはバッグ(「パッケージ」)を受け取るFC 200の領域であってもよい。ハブゾーン213内の作業者および/または機械は、小包218を取り出し、各小包が配達エリアのどの部分に行こうとするかを決定し、小包を適切なキャンプゾーン215にルーティングすることができる。例えば、配達エリアが2つのより小さいサブエリアを有する場合、パッケージは、2つのキャンプゾーン215のうちの1つに行くことができる。いくつかの実施形態では、作業者または機械は、(例えば、デバイス119A~119Cのうちの1つを使用して)パッケージをスキャンして、その最終的な宛先を決定することができる。パッケージをキャンプゾーン215にルーティングすることは、例えば、(例えば、郵便番号に基づいて)パッケージが向けられている地理的エリアの一部を決定することと、地理的エリアの一部に関連付けられたキャンプゾーン215を決定することとを含むことができる。
キャンプゾーン215は、いくつかの実施形態では、1つまたは複数の建物、1つまたは複数の物理的空間、または1つまたは複数のエリアを備えることができ、ハブゾーン213から受け取られたパッケージは、ルートおよび/またはサブルートに分類される。いくつかの実施形態では、キャンプゾーン215は、FC 200から物理的に分離されているが、他の実施形態では、キャンプゾーン215は、FC 200の一部を形成することができる。
キャンプゾーン215内の作業者および/または機械は、例えば、既存のルートおよび/またはサブルートに対する目的地の比較、各ルートおよび/またはサブルートに対する作業負荷の計算、時刻、出荷方法、パッケージ220を出荷するためのコスト、パッケージ220内のアイテムに関連付けられたPDDなどに基づいて、パッケージ220がどのルートおよび/またはサブルートに関連付けられるべきかを決定することができる。いくつかの実施形態では、作業者または機械は、(例えば、デバイス119A~119Cのうちの1つを使用して)パッケージをスキャンして、その最終的な宛先を決定することができる。パッケージ220が特定のルートおよび/またはサブルートに割り当てられると、作業者および/または機械は、出荷されるパッケージ220を移動させることができる。例示的な図2において、キャンプゾーン215は、トラック222、自動車226、および配達作業員224Aおよび224Bを含む。いくつかの実施形態では、トラック222は、配達作業員224Aによって駆動されてもよく、配達作業員224Aは、FC 200のパッケージを配達する常勤の従業員であり、トラック222は、FC 200を所有、リース、または運営する同じ会社によって所有、リース、または運営される。いくつかの実施形態では、自動車226は、配達作業者224Bによって駆動されてもよく、配達作業者224Bは、必要に応じて(例えば、季節的に)配達している「屈曲」または時折の作業者である。自動車226は、配達員224Bによって所有され、リースされ、または操作されてもよい。
図3を参照すると、アウトバウンドフローをシミュレートするための最適化システム301を備えるシステムの例示的実施形態を示す概略ブロック図300が示される。最適化システム301は、図1Aのシステム100内の1つまたは複数のシステムに関連付けることができる。例えば、最適化システム301は、SCMシステム117の一部として実施することができる。いくつかの実施形態では、最適化システム301は、各FC 200に関する情報、ならびに他のシステム(例えば、外部フロントエンドシステム103、出荷および注文追跡システム111、および/またはFOシステム113)からの顧客注文に関する情報を格納するコンピュータシステムとして実装されてもよい。例えば、最適化システム301は、FC間のSKUの配分を記述する情報を記憶し得る、1つ以上のプロセッサ305を含み得る。したがって、最適化システム301の1つ以上のプロセッサ305は、各FCに記憶されるSKUのリストを記憶することができる。1つ以上のプロセッサ305は、FCの各々に関連する制約を記述する情報を記憶することもできる。例えば、特定のFCは、最大容量、サイズ、冷蔵の必要性、重量、または他のアイテム要件による特定のアイテムとの適合性、移送のコスト、建物の制約、および/またはそれらの任意の組み合わせを含む制約を有し得る。例として、特定のアイテムは、1つのフルフィルメントセンターにのみ格納されてもよく、一方、特定の他のアイテムは、複数のフルフィルメントセンターに格納されてもよい。さらに他の実施形態では、特定のフルフィルメントセンターは、特定のセットのアイテム(例えば、生鮮食品または冷凍製品)のみを格納するように設計されてもよい。1つまたは複数のプロセッサ305は、この情報ならびに各FCに関する関連情報(例えば、数量、サイズ、受領日、有効期限など)を格納または取り出し得る。
他の実施形態では、各FC 200に関連付けられた前述の情報のそれぞれは、データベース304に格納され得る。したがって、最適化システム301は、ネットワーク302を介してデータベース304から情報を検索することができる。データベース304は、情報を記憶し、ネットワーク302を介してアクセスされる1つ以上のメモリ装置を含んでもよい。例として、データベース304は、OracleTMデータベース、SybaseTMデータベース、またはその他のリレーショナルデータベース、あるいはHadoopシーケンスファイル、HBase、またはCassandraなどの非リレーショナルデータベースを含むことができる。データベース304は、システム300に含まれるものとして示されているが、代替的に、システム300から離れて配置されてもよい。他の実施形態では、データベース304は、最適化システム301に組み込まれてもよい。データベース304は、データベース304のメモリ装置に記憶されたデータの要求を受信し処理し、データベース304からデータを提供するように構成された計算コンポーネント(例えば、データベース管理システム、データベースサーバ等)を含んでもよい。
システム300はまた、ネットワーク302およびサーバ303を含んでもよい。最適化システム301、サーバ303、およびデータベース304は、ネットワーク302を介して接続され、互いに通信可能であってもよい。ネットワーク302は、無線ネットワーク、有線ネットワーク、または無線ネットワークと有線ネットワークの任意の組み合わせのうちの1つ以上とすることができる。例えば、ネットワーク302は、ファイバ光ネットワーク、受動光ネットワーク、ケーブルネットワーク、インターネットネットワーク、衛星ネットワーク、無線LAN、モバイル通信のためのグローバルシステム、パーソナルコミュニケーションサービス(「PCS」)、パーソナルエリアネットワーク(「PAN」)、D-AMPS、Wi-Fi、固定Wireless Data、IEEE 802.11b、802.15.1、802.11n及び802.11g、又はデータを送受信するための有線又は無線ネットワークの1つ又は複数を含むことができる。
さらに、ネットワーク302は、電話回線、光ファイバ、IEEEイーサネット(登録商標)902.3、ワイドエリアネットワーク(「WAN」)、ローカルエリアネットワーク(「LAN」)、またはインターネットなどのグローバルネットワークを含むことができるが、これらに限定されない。また、ネットワーク302は、インターネット・ネットワーク、無線通信ネットワーク、セルラ・ネットワークなど、またはこれらの任意の組み合わせをサポートしてもよい。ネットワーク302は、スタンドアロンネットワークとして、または互いに協働して動作する、1つのネットワーク、または任意の数の上述の例示的なタイプのネットワークをさらに含むことができる。ネットワーク302は、それらが通信可能に結合されている1つ以上のネットワーク要素の1つ以上のプロトコルを利用することができる。ネットワーク302は、他のプロトコルとの間で、またはネットワーク装置の1つ以上のプロトコルとの間で変換することができる。ネットワーク302は、単一のネットワークとして示されているが、1つ以上の実施形態によれば、ネットワーク302は、例えば、インターネット、サービスプロバイダのネットワーク、ケーブルテレビネットワーク、企業ネットワーク、およびホームネットワークなどの複数の相互接続されたネットワークを備えてもよいことを理解されたい。
サーバ303は、ウェブサーバであってもよい。サーバ303は、例えば、インターネットのようなネットワーク(例えば、ネットワーク302)を介して、例えばユーザによってアクセス可能なウェブコンテンツを配信するハードウェア(例えば、1つ以上のコンピュータ)および/またはソフトウェア(例えば、1つ以上のアプリケーション)を含み得る。サーバ303は、例えば、ハイパーテキスト転送プロトコル(HTTPまたはsHTTP)を使用して、ユーザと通信することができる。ユーザに配信されるウェブページは、例えば、HTML文書を含み得、これは、テキストコンテンツに加えて、画像、スタイルシート、およびスクリプトを含み得る。
例えば、ウェブブラウザ、ウェブクローラ、またはネイティブモバイルアプリケーションなどのユーザプログラムは、HTTPを使用して特定のリソースに対する要求を行うことによって通信を開始することができ、そうすることができない場合、サーバ303はそのリソースまたはエラーメッセージで応答することができる。サーバ303は、例えば、ファイルのアップロードを含むウェブフォームをユーザが送信することができるように、ユーザからのコンテンツの受信を可能にするか、または容易にすることもできる。サーバ303は、例えば、アクティブ・サーバ・ページ、PHP、又は他のスクリプト言語を用いたサーバ・サイド・スクリプティングをサポートしてもよい。したがって、サーバ303の挙動は別々のファイルでスクリプト化することができ、一方で実際のサーバソフトウェアは変更されない。
他の実施形態では、サーバ303は、アプリケーションサーバであってもよく、これは、その適用されるアプリケーションをサポートするための手順(例えば、プログラム、ルーチン、スクリプト)の効率的な実行専用のハードウェアおよび/またはソフトウェアを含んでもよい。サーバ303は、例えば、Javaアプリケーションサーバ(例えば、Javaプラットフォーム、Enterprise Edition (Java EE)、Microsoft(登録商標)からの.NETフレームワークス、PHP アプリケーションサーバなどのフレームワーク)を含む1つ以上のアプリケーションサーバフレームワークを含むことができる。様々なアプリケーションサーバーフレームワークは、包括的なサービス層モデルを含む可能性がある。サーバ303は、プラットフォーム自体によって定義されたAPIを介して、例えば、システム100を実装するエンティティにアクセス可能なコンポーネントのセットとして働くことができる。
以下で詳細に説明するように、最適化システム301の1つまたは複数のプロセッサ305は、1つまたは複数のFCへの製品のアウトバウンドフローの1つまたは複数のシミュレーションを生成するために遺伝的アルゴリズムを実装することができる。例えば、データベース304に記憶された各FCに関連する情報に基づいて、1つ以上のプロセッサ305は、1つ以上のFCの間の製品、例えばSKUのアウトバウンドフローを最適化することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、SKUマッピングを介してアウトバウンドフローを最適化することができる。SKUマッピングは、FCへのSKUの割り当てであり、アウトバウンドネットワーク最適化は、SKUマッピングによって達成され得る。1つまたは複数のプロセッサ305は、SKUマッピングを介してシミュレーションを生成することができ、各シミュレーションは、FC間のSKUの異なる配分(distribution)を含むことができる。各シミュレーションは、ランダムに生成され得る。したがって、1つまたは複数のプロセッサ305は、1つまたは複数のシミュレーションを生成し、州全体のネットワーク、地域ネットワーク、または全国ネットワークにわたって1つまたは複数のFCの出力レートを最も改善する最適シミュレーションを選択することによって、最適シミュレーションを見つけることができる。出力レートを改善する最適シミュレーションを決定することは、製品のアウトバウンドフローを最適化する際に重要であり得る。例えば、各FCに各アイテムのうちの1つを配置することはより容易であり得るが、これは、特定のアイテムに対する顧客の需要が急速に増加する場合、FCがアイテムを急速に使い果たすため、最適ではない場合がある。同様に、1つのアイテムのすべてが単一のFCに配置される場合、これは、様々な場所からの顧客がアイテムを望む可能性があるため、最適ではない可能性がある。その場合、アイテムは単一のFC内でのみ利用可能であるため、1つのFCから別のFCにアイテムを転送するためのコストが増加する可能性があり、したがって、システムは効率を失うことになる。したがって、製品のアウトバウンドフローを最適化することを対象とするコンピュータ化された実施形態は、FC間のSKUの最適な配分を決定するための新規かつ重要なシステムを提供する。
さらに別の実施形態では、1つまたは複数のプロセッサ305は、ビジネス制約などの1つまたは複数の制約を遺伝的アルゴリズムに実装することができる。制約は、例えば、各FCの最大容量、各FCに関連付けられたアイテム互換性、FCに関連付けられたコスト、または各FCに関連付けられた任意の他の特性を含むことができる。各FCの最大容量は、各FCにおいていくつのSKUを保持することができるかに関連する情報を含むことができる。各FCに関連付けられたアイテム互換性は、アイテムのサイズ、アイテムの重量、冷蔵の必要性、またはアイテム/SKUに関連付けられた他の要件のために、特定のFCに保持することができない特定のアイテムに関連付けられた情報を含むことができる。また、特定のアイテムが保持されることを可能にし、特定のアイテムが各FCで保持されることを防止する、各FCに関連付けられた建物制約が存在し得る。各FCに関連するコストは、FC間転送コスト、クラスタ間輸送コスト(例えば、複数のFCからのアイテムの輸送から生じる輸送コスト)、FC間のアイテムのクロスストッキングから生じる輸送コスト、すべてのSKUを1つのFC内に有することに関連するパーセル当たり単位(UPP)コスト、またはそれらの任意の組合せを含むことができる。
他の実施形態では、1つまたは複数のプロセッサ305は、効率を高めるために、遺伝的アルゴリズムの1つまたは複数の部分をキャッシュすることができる。例えば、遺伝的アルゴリズムの1つまたは複数の部分をキャッシュして、シミュレーションが生成されるたびにアルゴリズムのすべての部分を再実行する必要をなくすことができる。1つ以上のプロセッサ305は、各反復において有意な変化があるかどうかに基づいて、遺伝的アルゴリズムのどの部分がキャッシュされ得るかを決定し得る。例えば、いくつかのパラメータは、シミュレーションが生成されるたびに一貫したままであってもよく、他のパラメータは変化してもよい。毎回一貫したままであるパラメータは、シミュレーションが生成されるたびに再実行される必要はない。したがって、1つ以上のプロセッサ305は、これらの一貫性のあるパラメータをキャッシュすることができる。例えば、各FCにおける最大容量は、シミュレーションが生成されるたびに変化しないことがあり、したがって、キャッシュされることがある。一方、シミュレーションごとに変化し得るパラメータには、例えば、顧客注文プロファイル、地域にわたる各SKUにおける顧客の関心、または収納モデルが含まれ得る。顧客注文プロファイルは、州全体、地域、または全国的なネットワークにわたる顧客注文の挙動を指すことができる。例えば、顧客注文プロファイルは、州全体、地域、または全国的なネットワークにわたる顧客注文の注文パターンを指すことができる。各SKUへの顧客の関心は、州全体、地域、または全国的なネットワークにわたる各アイテムに対する顧客の需要量を指すことができる。格納モデルは、ピッキングゾーン209内の特定のスポット、または各FC内の記憶ユニット210上の特定のスペースなど、特定のアイテムがどこに配置されるかを示すモデルを指すことができる。ストーイング(stowing)モデルはFCごとに異なる場合がある。遺伝的アルゴリズムの1つまたは複数の部分をキャッシュすることによって、1つまたは複数のプロセッサ305は、効率を高め、処理容量を低減することができる。
いくつかの実施形態では、シミュレーションアルゴリズムに追加される別の制約は、各FCにおける顧客需要を含むことができる。1つまたは複数のプロセッサ305は、FCのそれぞれにおける注文履歴を調べることによって、FCのそれぞれにおける顧客需要を決定することが可能であり得る。他の実施形態では、1つまたは複数のプロセッサ305は、FCのそれぞれにおける顧客需要をシミュレートすることができる。例えば、各FCにおける少なくとも注文履歴に基づいて、1つまたは複数のプロセッサ305は、各FCにおける顧客需要を予測および/またはシミュレートすることができる。FCのそれぞれにおけるシミュレートされた顧客需要に少なくとも基づいて、1つまたは複数のプロセッサ305は、SKU割当て、SKUマッピング、および製品のアウトバウンドフローを最適化するために、FC間でSKUを割り当てることができる。
図4は、製品のアウトバウンドフローをシミュレートおよび最適化するための例示的な方法400を示すフローチャートである。この例示的な方法は、例として提供される。図4に示される方法400は、様々なシステムの1つまたは複数の組合せによって実行されるか、さもなければ実行されることができる。以下に説明する方法400は、一例として図3に示す最適化システム301によって実行することができ、そのシステムの様々な要素は、図4の方法を説明する際に参照される。図4に示される各ブロックは、例示的な方法400における1つまたは複数のプロセス、方法、またはサブルーチンを表す。図4を参照すると、例示的な方法400は、ブロック401で開始することができる。
ブロック401で、1つまたは複数のプロセッサ305は、FC間のSKUの初期配分(initial distribution)を含む、解の初期セットを受信することができる。いくつかの実施形態では、解の各セットは、各FCに格納される1つまたは複数のSKUのリストを備えることができる。1つまたは複数のSKUは、対応する各アイテムに固有のものとすることができ、したがって、製造業者、材料、色、包装タイプ、重量、または対応する各アイテムに関連する任意の他の特性を示すことができる。解の各セットはまた、対応するFCに格納される1つまたは複数のSKUのリストに基づいて、各FC内のいくつかの総出力を備えることができる。いくつかの態様では、解の各セット内のFC間のSKUの配分は、ランダムに生成され得る。例えば、1つ以上のプロセッサ305が一組の解を生成するときはいつでも、1つ以上のSKUが1つ以上のFCの間でランダムに配分されてもよい。1つまたは複数のプロセッサ305が解のセットを生成するたびに、解の各セットは、FC間のSKUの異なる配分を含むことができる。他の態様では、一組の解を別のシステムまたはデータストアから受信することができる。例えば、解のセットは、SKUの現在の配分に基づくことができる。
上述のように、解の各セットは、各FCに関連する1つまたは複数の制約を考慮に入れることもできる。たとえば、1つまたは複数のプロセッサ305は、1組の解を生成するときに、1つまたは複数の制約(たとえば、各FCの最大容量、各FCに関連するアイテム互換性、FCに関連するコスト、または各FCに関連する任意の他の特性)を適用することができる。したがって、解のセット(例えば、FC間のSKUの配分)は、各FCに関連する様々な制約も考慮に入れながら、ランダムに生成され得る。
解の初期セットが受信されると、方法400はブロック402に進むことができる。ブロック402で、1つまたは複数のプロセッサ305は、解の初期セット内の各解のシミュレーションを実行することができる。例えば、1つまたは複数のプロセッサ305は、解の初期セット内のFC間のSKUの初期配分に基づいて、製品のアウトバウンドフローをシミュレートすることができる。1つまたは複数のプロセッサ305は、FC間のSKUの初期配分がどのくらい良好に実行されるかを判定するために、解の初期セット内の各解のシミュレーションを実行することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、解の初期セット内の各解のシミュレーションを実行することによって、出力データを取得することができる。出力データは、解の各セット内の各FCにおける総出力を含むことができる。
解の初期セットにおける各解に対するシミュレーションが実行されると、方法400はブロック403に進むことができる。ブロック403で、1つまたは複数のプロセッサ305は、受信した解の初期セットの適合度を評価することができる。例えば、1つまたは複数のプロセッサ305は、FC間のSKUの配置のための解の初期セットが最適であるかどうかを評価することができる。1つまたは複数のプロセッサ305が、初期シミュレーションにおける解が最適であると判定した場合、方法400は、ブロック403Aに進むことができる。ブロック403Aで、1つまたは複数のプロセッサ305は、解の初期セットが最適であるため、終了条件に達したと判定することができる。ブロック403Aで、1つまたは複数のプロセッサ305が、解の初期セットが最適であり、終了条件に達したと判定した場合、方法400は、ブロック407に進むことができ、そこで、1つまたは複数のプロセッサ305は、方法400を終了することができる。以下で詳細に説明するように、解の初期セットの適合性を評価することは、例えば、各FCにおける総出力を計算すること、各解について各FCの寄与率(participation ratio)を計算すること、または寄与率に基づいて各解についてスコアを決定することを含むことができる。各FCにおける総出力は、各FCからの品目/製品の総出力を含むことができる。FCの寄与率は、FCのネットワークの総出力のパーセンテージを示すことができる。例えば、FCのそのようなネットワークは、州全体、地域全体、または全国規模とすることができる。
1つまたは複数のプロセッサ305が、初期シミュレーションがまだ最適ではなく、ブロック403Aにおいて終了条件に到達していないと判断した場合、方法400はブロック404に進み続けることができる。例えば、1つまたは複数のFCにおける寄与率が所定のしきい値だけ増加する場合、1つまたは複数のプロセッサ305は、解の初期セットが最適であると判定することができる。所定の閾値は、0.5%と10%との間であってもよい。一例として、1つまたは複数のFCの寄与率に2%の増加がある場合、1つまたは複数のプロセッサ305は、解の初期セットが最適であると判定することができる。しかしながら、1つまたは複数のFCにおける寄与率が所定の閾値だけ増加しない場合、1つまたは複数のプロセッサ305は、シミュレーションが最適でないと判断することができ、したがって、方法400はブロック404に継続してもよい。
ブロック404で、1つまたは複数のプロセッサ305は、初期解集合から1つまたは複数の解を選択して、シミュレーションアルゴリズム(例えば、遺伝的アルゴリズム)に供給(feed)して、1つまたは複数の追加解を生成することができる。選択され、シミュレーションアルゴリズムに供給される1つまたは複数の解は、生成される1つまたは複数の追加の解において一定のままであってもよい。
1つまたは複数の新しい追加の解が生成されると、方法400はブロック405に進むことができる。ブロック405において、1つ以上のプロセッサ305は、1つ以上の新しい解の適応度を再度評価してもよい。ブロック403と同様に、1つまたは複数のプロセッサ305は、FC間のSKUの配置のための1つまたは複数の新しい解が最適であるかどうかを評価することによって、1つまたは複数の新しいシミュレーションの適合性を評価することができる。例えば、1つまたは複数の新しい解の適合度を評価することは、例えば、各FCにおける総出力を計算すること、各FCの寄与率を計算すること、または各解について計算された寄与率に基づいて各解についてスコアを決定することを含むことができる。
1つまたは複数の新しい解の適合性を評価した後、方法400はブロック406に進むことができる。ブロック406で、1つまたは複数のプロセッサ305は、終了条件に達したかどうかを判定することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305が、1つまたは複数のFCにおける寄与率が所定のしきい値だけ増加したと判定した場合、終了条件に到達することができる。例えば、上述のように、1つまたは複数のプロセッサ305が、1つまたは複数のFCにおける寄与率が0.5%~10%の間で増加したと判定した場合、1つまたは複数のプロセッサ305は、シミュレーションが最適であり、終了条件に達したと判定することができる。他の実施形態では、1つまたは複数のFCの寄与率に2%の増加がある場合、1つまたは複数のプロセッサ305は、終了条件に達したと判定することができる。
1つまたは複数のプロセッサ305が、終了条件に達したと判定した場合、方法400はブロック407に進むことができる。ブロック407で、1つまたは複数のプロセッサ305は、最適化を終了することができる。例えば、1つまたは複数のプロセッサ305は、シミュレーションアルゴリズムの実行を停止することができる。しかしながら、1つ以上のプロセッサ305が終了条件に達していないことを決定した場合、方法400はブロック404に戻ることができ、ここで、1つ以上のプロセッサ305は、受け取った解の初期セットに生成された1つ以上の新しい解を追加して、新しい解セットを形成することができる。次いで、1つまたは複数のプロセッサ305は、新しい解のセットから1つまたは複数の解を再び選択し、新しい解のセットから選択された1つまたは複数の解をシミュレーションアルゴリズムに供給して、1つまたは複数の追加の解を生成することができる。終了条件に達するまで、1つ以上のプロセッサ305がこのプロセスを繰り返すことができる。例えば、1つまたは複数のプロセッサ305は、1つまたは複数のFCにおける寄与率の増加が、2%の増加などの所定のしきい値に達するまで、プロセスを繰り返すことができる。
図5は、製品のアウトバウンドフローをさらに詳細にシミュレーションおよび最適化するための方法400(図4において)を示すフローチャートである。この例示的な方法は、例として提供される。図5に示される方法500は、実行されるか、さもなければ、様々なシステムの1つまたは複数の組合せによって実行され得る。以下に説明する方法500は、一例として図3に示す最適化システム301によって実行することができ、そのシステムの様々な要素は、図5の方法を説明する際に参照される。図5に示される各ブロックは、例示的な方法500における1つまたは複数のプロセス、方法、またはサブルーチンを表す。図5を参照すると、例示的な方法500は、ブロック501で開始することができる。
ブロック501では、図4のブロック401と同様に、1つまたは複数のプロセッサ305が、FC間のSKUの初期配分を含む解の初期セットを受信することができる。いくつかの実施形態では、解の初期セットは、各FCに格納される1つまたは複数のSKUのリストを含むことができる。1つまたは複数のSKUは、対応する各アイテムに固有のものとすることができ、したがって、製造業者、材料、色、包装タイプ、重量、または対応する各アイテムに関連する任意の他の特性を示すことができる。いくつかの態様では、解の各セットは、ランダムに生成され得る。例えば、1つ以上のプロセッサ305が一組の解を生成するときはいつでも、1つ以上のSKUが1つ以上のFCの間でランダムに配分されてもよい。1つまたは複数のプロセッサ305が解のセットを生成するたびに、各シミュレーションは、FC間のSKUの異なる配分を含むことができる。例えば、解の各セットは、FC間のSKUの異なる配分を含むことができる。
上述のように、解の各セットは、各FCに関連する1つまたは複数の制約を考慮に入れることもできる。例えば、1つまたは複数のプロセッサ305は、解の各セットを生成するときに、1つまたは複数の制約(例えば、各FCの最大容量、各FCに関連するアイテム互換性、FCに関連するコスト、または各FCに関連する任意の他の特性)を適用することができる。したがって、解のセット(例えば、FC間のSKUの配分)は、各FCに関連する様々な制約も考慮に入れながら、ランダムに生成され得る。
解の初期セットが受信されると、方法500はブロック502に進むことができる。ブロック502で、1つまたは複数のプロセッサ305は、解の初期セット内の各解のシミュレーションを実行することができる。例えば、1つまたは複数のプロセッサ305は、解の初期セット内のFC間のSKUの初期配分に基づいて、製品のアウトバウンドフローをシミュレートすることができる。1つまたは複数のプロセッサ305は、FC間のSKUの初期配分がどのくらい良好に実行されるかを判定するために、解の初期セット内の各解のシミュレーションを実行することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、解の初期セット内の各解のシミュレーションを実行することによって、出力データを取得することができる。出力データは、解の各セット内の各FCにおける総出力を含むことができる。例えば、出力データは、対応するFCに格納される1つまたは複数のSKUのリストに基づいて、各FC内のいくつかの総出力を含むことができる。
解の初期セット内の各解に対するシミュレーションが実行されると、方法500はブロック503に進むことができる。ブロック503で、1つまたは複数のプロセッサ305は、解の初期セット内の各解に対する寄与率を計算することができる。各解の寄与率を計算するために、1つまたは複数のプロセッサ305は、各FCからのアイテム/プロダクトの合計出力、ならびにFCのネットワーク(たとえば、全国ネットワーク、地域規模ネットワーク、または州規模ネットワーク)のアイテム/プロダクトの合計出力を決定することができる。FCの寄与率は、FCのネットワーク(例えば、州全体、地域全体、または全国全体)の総出力のパーセンテージを示すことができる。
各解に対する寄与率が計算されると、方法500はブロック504に進むことができる。ブロック504で、計算された寄与率に基づいて、1つまたは複数のプロセッサ305は、解の初期セット内の各解についてのスコアを決定することができる。スコアは、各解および各FCについての寄与率の増加を示すことができる。例えば、1つまたは複数のプロセッサ305は、各FCでの初期出力(例えば、初期シミュレーションにおける)と新しい出力(例えば、新しいシミュレーションにおける)との間の差、ならびに初期寄与率(例えば、初期シミュレーションにおける)と新しい寄与率(例えば、新しいシミュレーションにおける)との間の差を決定することができる。計算された寄与率の差に基づいて、1つまたは複数のプロセッサ305は、各FCの寄与率の増加または減少があったかどうかを判定することができる。寄与率の差に基づいて、1つまたは複数のプロセッサ305は、各解にスコアを割り当てることができる。割り当てられたスコアは、新しい解が、各FCの寄与率をどのくらい増加または減少させることができたか(例えば、FCのネットワークの総出力に対する各FCの寄与)を示すことができる。FCの寄与率は、FCのネットワーク(州全体、地域全体、または全国)の総出力のパーセンテージを示すことができる。
スコアが決定されると、方法500はブロック505に進むことができる。ブロック505で、1つまたは複数のプロセッサ305は、最も高い決定されたスコアを有する少なくとも1つの解を選択することができる。例えば、1つまたは複数のプロセッサ305は、最も高い決定されたスコアを有する解の初期セット内の少なくとも1つの解を選択することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、解の初期セットにおいて1個から10個の間で解を選択できる。選択された解は、FCのネットワーク(例えば、全国的なネットワーク、地域的なネットワーク、または州全体のネットワーク)の全体的な出力に対する対応するFCの寄与を最良に改善する解を含むことができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、アルゴリズムを使用して、1つまたは複数の追加の解を生成するための入力として選択される解を決定することができる。例えば、アルゴリズムは、選択されるべき各解の確率を決定することができる。例として、アルゴリズムに基づいて、最も高い決定されたスコアを有する解は、より低い決定されたスコアを有する解のセットにおける他の解よりも高い選択される確率を有してもよい。したがって、最も高い決定されたスコアを有する解(複数可)は、1つまたは複数の追加の解を生成するために入力として選択される、より高い確率を有いてよい。選択されるべき各解の確率を決定するために使用されるアルゴリズムは、以下のようにすることができる:
ここで、Siは解iのスコアであり、Piは解iが選択される確率である。
方法500は、506をブロックするように進んでもよいが、この場合、1つ以上のプロセッサ305は、決定された得点の最も高い選択解をシミュレーションアルゴリズム(例えば、遺伝子アルゴリズム)に供給することができる。ブロック507で、1つまたは複数のプロセッサ305は、1つまたは複数の追加の解を生成することができる。例えば、1つ以上のプロセッサ305は、選択された解(複数可)(ブロック506内)を、受信された解の初期セット(ブロック501内)に追加して、新しい解のセットを生成することができる。いくつかの実施形態では、最高の決定されたスコアを有する選択された解(複数可)は、生成された解の新しいセットにおいて一定のままであることができ、一方、解の新しいセットにおける1つまたは複数の他の解は、FCにおける1つまたは複数の制約を考慮に入れながら、再びランダムに生成されることができる。したがって、1つまたは複数のプロセッサ305は、最高の決定されたスコアを有する1から10の解を選択し、それらをシミュレーションアルゴリズムに供給して、1つまたは複数の追加の解を生成することができる。シミュレーションアルゴリズムに多数の解を供給することにより、プロセスは、毎回、より多くの可能な解(例えば、SKUの全ての可能な組み合わせ)を生成するであろうシステムと比較して、プロセッサ負荷を減らし、効率を増加させる。
シミュレーションアルゴリズムに供給される解は、生成される追加解で一定のままになる場合がある。例えば、シミュレーションアルゴリズムに供給される選択された解は、対応するFC間のSKUの特定の配分を含み得る。選択された解におけるFC間のSKUの配分は、生成された追加の解において変化しないままであってもよい。
ブロック507で1つまたは複数の追加の解が生成されると、方法500はブロック508に進むことができる。ブロック502と同様に、ブロック508で、1つまたは複数のプロセッサ305は、(ブロック507で)生成された1つまたは複数の追加の解のシミュレーションを実行することができる。例えば、1つまたは複数のプロセッサ305は、1つまたは複数の追加の解内のFC間のSKUの分散がどの程度良好に実行されるかを判定するために、1つまたは複数の追加の解のシミュレーションを実行することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、1つまたは複数の追加の解のそれぞれのシミュレーションを実行することによって出力データを取得することができる。出力データは、1つまたは複数の追加の解のそれぞれにおける各FCにおける総出力を含むことができる。例えば、出力データは、対応するFCに格納される1つまたは複数のSKUのリストに基づいて、各FC内のいくつかの総出力を含むことができる。
1つまたは複数の追加の解のシミュレーションが実行されると、方法500は、ブロック509および510に進むことができる。ブロック503と同様に、ブロック509で、1つ以上のプロセッサ305が、1つ以上の追加の解のそれぞれについて寄与率を計算してもよい。ブロック504と同様に、ブロック510で、1つまたは複数のプロセッサ305は、寄与率に基づいて、1つまたは複数の追加の解のそれぞれについてスコアを決定することができる。
(例えば、図4のブロック403に関して上述したように)1つまたは複数の追加の解の適合性(fitness)を評価した後、方法500はブロック511に進むことができる。ブロック511で、1つまたは複数のプロセッサ305は、終了条件に達したかどうかを判定することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305が、1つまたは複数のFCにおける寄与率が所定のしきい値だけ増加したと判定した場合、終了条件に到達することができる。例えば、上述のように、1つまたは複数のプロセッサ305が、1つまたは複数のFCにおける寄与率が0.5%~10%の間で増加したと判定した場合、1つまたは複数のプロセッサ305は、シミュレーションが最適であり、終了条件に達したと判定することができる。他の実施形態では、1つまたは複数のFCの寄与率に2%の増加がある場合、1つまたは複数のプロセッサ305は、終了条件に達したと判定することができる。
1つ以上のプロセッサ305が、終了条件に達したと判断した場合、方法500は、ブロック512に進むことができる。ブロック512で、1つまたは複数のプロセッサ305は、最高スコアを有する最適解(best-performance solution)を選択し、最適化プロセスを終了することができる。例えば、1つ以上のプロセッサ305は、最も高い決定されたスコア(例えば、寄与率の最も高い増加)を有する解を選択してもよい。選択された解は、最適解であってもよい。
一方、ブロック511で、1つまたは複数のプロセッサ305が、終了条件に達していないと判定した場合、方法500は、ブロック511Aに進むことができる。ブロック511Aで、1つまたは複数のプロセッサ305は、(ブロック507で)生成された1つまたは複数の追加の解を(ブロック501で)受信された解の初期セットに追加して、新しい解のセットを生成することができる。次いで、方法500は、解の新しいセットを用いてブロック505に戻ることができ、1つまたは複数のプロセッサ305は、最高の決定されたスコアを有する解の新しいセットから少なくとも1つの解を選択することができる。
少なくとも1つの解が選択されると、方法500は再びブロック506に進むことができ、ブロック507で、1つまたは複数のプロセッサが、選択された解を新しい解のセットからシミュレーションアルゴリズムに供給して、1つまたは複数の追加の解を生成する。いくつかの実施形態では、解の新しいセットから選択された解は、(ブロック507で)生成された追加の解のうちの1つまたは複数であってもよく、および/または(ブロック501で)受信された解の初期セット内の解のうちの1つまたは複数であってもよい。1つまたは複数のプロセッサ305は、終了条件に達するまで、ブロック505~511Aでプロセスを繰り返すことができる。例えば、1つまたは複数のプロセッサ305は、1つまたは複数のFCにおける寄与率の増加が、2%の増加などの所定のしきい値に達するまで、プロセスを繰り返すことができる。
他の実施形態では、1つまたは複数のプロセッサ305は、プロセスが繰り返された回数が所定の閾値を超えるまで、プロセスを繰り返すことができる。従って、1つまたは複数のプロセッサ305は、プロセスが所定回数繰り返された後に、シミュレーションプロセスを終了してもよい。たとえば、1つまたは複数のプロセッサ305がプロセスを繰り返した回数、たとえば、追加のシミュレーションを生成した回数が所定のしきい値を超えた場合、終了条件に達していなくても、1つまたは複数のプロセッサ305は方法500を終了することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、ブロック511Aに進み、ブロック505~507に戻って、方法500を終了する前に、約10回、9回、7回、5回、または3回、1つまたは複数の追加の解を生成することができる。
1つ以上のプロセッサ305がブロック511で終了条件(termination condition)に達したと判断し、1つ以上のプロセッサ305がブロック512で最適解を選択する場合、方法500はブロック513に進むことができる。ブロック513において、1つ以上のプロセッサ305が、最適解に基づいて、FC間にSKUを割り当てることができる。先に論じたように、1つまたは複数のプロセッサ305は、最適解でシミュレートされた配分に従って、FCの間でSKUを割り振ることができる。最適の解決策に従ってFC間でSKUを割り当てることによって、1つまたは複数のプロセッサ305は、製品のアウトバウンドフローを最適化することができる。
次に、図6を参照すると、生成されたシミュレーションの結果を含む例示的なサマリーページの図が示される。上述のように、1つまたは複数のプロセッサ305は、各FCのための解のセットを備えるシミュレーションを生成することができる。1つまたは複数のプロセッサ305は、生成されたシミュレーションの結果をシステム100内の1つまたは複数のシステムに送信することができる。たとえば、1つまたは複数のプロセッサ305は、生成されたシミュレーションの結果を内部フロントエンドシステム105に送信して、結果を表示することができる。例示的なシミュレーションの例示的な要約ページ600を図6に示す。図6に見られるように、1つまたは複数のプロセッサ305は、新しいシミュレーション(例えば、「出力後」)における各FCでの総出力と同様に、初期シミュレーション(例えば、「出力前」)における各FCでの総出力を決定することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、初期シミュレーションにおける総出力と新しいシミュレーションにおける総出力との間の差(例えば、「分散(variance)」)をさらに決定してもよい。差を計算することによって、1つまたは複数のプロセッサ305は、新しいシミュレーションが、各FCの初期総出力、ならびにFCのネットワーク(たとえば、全国ネットワーク、地域規模ネットワーク、または州規模ネットワーク)の全体出力に対する各FCの初期寄与を改善したかどうかを判定することができる。いくつかの態様では、1つまたは複数のプロセッサ305は、パーセンテージの分散を計算することができる。
上述したように、1つまたは複数のプロセッサ305は、初期シミュレーションおよび新しいシミュレーションにおける各FCの寄与率をさらに計算することができる。寄与率は、FCのネットワーク(例えば、全国的なネットワーク、地域的なネットワーク、または州全体のネットワーク)の総出力に対する各FCの寄与を示すことができる。FCの寄与率は、FCのネットワーク(州全体、地域全体、または全国)の総出力のパーセンテージを示すことができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、初期シミュレーション(例えば、「寄与率前(before participation ratio)」)および新しいシミュレーション(例えば、「寄与率後(after participation ratio)」)における各FCの参加比率の間の差を決定することができる。各FCの参加比率の間の差に基づいて、1つまたは複数のプロセッサ305は、各FCに関連付けられた各解についてのスコアを決定することができる。例として、最大数だけ特定のFCの寄与率を上げた解に、最大スコアを与えることができる。同様に、特定のFCの寄与率を最大数だけ減少させた解には、最小スコアを与えることができる。例えば、FCの寄与率を約2%上昇させる解に最大スコアを与えてもよい。
他の実施形態では、1つまたは複数のプロセッサ305は、少なくとも分散に基づいて各解のスコアを決定することができる。分散は各FCの参加比率の変化と相関するので、1つまたは複数のプロセッサ305は、最高の分散を返した解に最大スコアを与え、最低の分散を返した解に最小スコアを与えることができる。上述したように、1つ以上のプロセッサ305は、最高スコアを有する1つ以上の解を選択し、これらの解をシミュレーションアルゴリズムに供給して、追加のシミュレーションを生成することができる。いくつかの実施形態では、1つまたは複数のプロセッサ305は、上位2つの最高スコアを有する2つの解、または上位3つの最高スコアを有する3つの解を選択することができる。選択され、シミュレーションアルゴリズムに供給される解は、「最適シミュレーション」と呼ばれることがある。
本開示は、その特定の実施形態を参照して示され、説明されてきたが、本開示は、修正なしに、他の環境において実施され得ることが理解され得る。前述の説明は、例示の目的で提示されている。これは、網羅的ではなく、開示された正確な形態または実施形態に限定されない。当業者であれば、開示された実施形態の明細書および実施を考慮することにより、修正および適応が明らかであろう。さらに、開示された実施形態の態様は、メモリに格納されるものとして説明されているが、当業者は、これらの態様が、例えば、ハードディスクまたはCD ROM、あるいは他の形態のRAMまたはROM、USB媒体、DVD、ブルーレイ、または他の光学ドライブ媒体などの二次記憶デバイスなどの他のタイプのコンピュータ可読媒体に格納されてもよいことを理解することができる。
記載された説明および開示された方法に基づくコンピュータプログラムは、熟練した開発者の技術の範囲内である。様々なプログラムまたはプログラムモジュールは、当業者に知られている技法のいずれかを使用して作成することができ、または既存のソフトウェアに関連して設計することができる。例えば、プログラム・セクションまたはプログラム・モジュールは、Net Framework、.NetCompact Framework (およびVisual Basic、C などの関連言語)、Java、C++、Objective-C、HTML、HTML/AJAXの組み合わせ、XML、またはJava アプレットを含むHTML内で、または、これらによって設計されてもよい。
さらに、例示的な実施形態が本明細書で説明されてきたが、本開示に基づいて当業者によって理解されるように、同等の要素、修正、省略、組み合わせ(例えば、様々な実施形態にわたる態様の)、適応、および/または変更を有する任意のおよびすべての実施形態の範囲。クレームの限定は、クレームに使用されている文言に広く基づいて解釈されるものとし、本明細書に記載されている例に限定されるものではなく、又は出願手続中に解釈されるものとする。実施例は、非排他的であると解釈されるべきである。さらに、開示された方法のステップは、ステップを並べ替えること、および/またはステップを挿入または削除することを含む、任意の方法で修正されてもよい。したがって、本明細書および実施例は、単に例示的なものとみなされ、真の範囲および精神は、以下の特許請求の範囲およびそれらの均等物の全範囲によって示されることが意図される。