(57)【要約】【課題】巡回対象の各地点のデータを元に巡回経路を生成する巡回経路生成装置を、ソフトウェアのカスタム開発を行わなくても様々な仕様のデータに適応可能にする。【解決手段】巡回対象の各地点を巡回する際の巡回経路を生成する巡回経路生成装置であって、前記各地点のそれぞれの位置を示すデータ及び前記各地点の巡回の必要性に関わるデータを含む、前記各地点ごとに定められた仕様の一次データを取得する一次データ取得部と、前記各地点の一次データを、前記巡回経路を生成するために定められた所定仕様の二次データに変換するデータ変換部と、前記各地点の二次データを用いて、前記巡回経路を生成する巡回経路生成部と、を備える。【選択図】図５
2020086894.tif 000002
【特許請求の範囲】
【請求項１】
巡回対象の各地点を巡回する際の巡回経路を生成する巡回経路生成装置であって、
前記各地点のそれぞれの位置を示すデータ及び前記各地点の巡回の必要性に関わるデータを含む、前記各地点ごとに定められた仕様の一次データを取得する一次データ取得部と、
前記各地点の一次データを、前記巡回経路を生成するために定められた所定仕様の二次データに変換するデータ変換部と、
前記各地点の二次データを用いて、前記巡回経路を生成する巡回経路生成部と、
を備える、巡回経路生成装置。
【請求項２】
請求項１に記載の巡回経路生成装置であって、
前記一次データを前記二次データに変換するための変換ルールを記憶する変換ルール記憶部と、
をさらに備え、
前記データ変換部は、前記変換ルールを用いて、前記一次データを前記二次データに変換する、
巡回経路生成装置。
【請求項３】
請求項２に記載の巡回経路生成装置であって、
新たな変換ルールの入力を受け付けるユーザインタフェースを備える変換ルール入力部と、
前記変換ルール記憶部に記憶されている前記変換ルールを、前記新たな変換ルールに更新する変換ルール更新部と、
をさらに備える、巡回経路生成装置。
【請求項４】
請求項１〜３のいずれかに記載の巡回経路生成装置であって、
前記データ変換部は、複数地点の一次データにそれぞれ含まれる位置を示すデータが同一の場所を示している場合には、前記複数地点の一次データを、前記同一の場所を巡回対象の一つの地点とする二次データに変換する、巡回経路生成装置。
【請求項５】
請求項１〜４のいずれかに記載の巡回経路生成装置であって、
前記各地点の二次データには、前記地点が、必ず巡回するべき巡回必須地点であるか、巡回してもしなくて良い巡回任意地点であるか、あるいは巡回しない巡回不要地点であるか、のいずれであるかを示すデータが含まれ、
前記データ変換部は、巡回対象の前記各地点の一次データに含まれる巡回の必要性に関わるデータを元に、前記各地点を、前記巡回必須地点、前記巡回任意地点、又は前記巡回不要地点のいずれかに分類し、その結果を前記各地点の二次データとして生成し、
前記巡回経路生成部は、全ての前記巡回必須地点を経路に含み、かつ、全ての前記巡回不要地点を経路に含まないように前記巡回経路を生成する、巡回経路生成装置。
【請求項６】
請求項５に記載の巡回経路生成装置であって、
前記各地点にはそれぞれ設備が設けられ、
前記一次データに含まれる巡回の必要性に関わるデータには、前記設備における物資の最大在庫量を示すデータ及び補充可能量を示すデータが含まれ、
前記データ変換部は、前記設備における前記物資の最大在庫量と補充可能量とを用いて求めた前記物資の補充の必要性を表す指標値の算出結果に応じて、前記各地点を、前記巡回必須地点、前記巡回任意地点、又は前記巡回不要地点のいずれかに分類する、巡回経路生成装置。
【請求項７】
請求項１〜６のいずれかに記載の巡回経路生成装置であって、
前記各地点の前記一次データを送信するデータ送信機が前記各地点に設けられ、
前記一次データ取得部は、前記各地点の前記データ送信機から前記一次データを取得する、巡回経路生成装置。
【請求項８】
請求項７に記載の巡回経路生成装置であって、
前記データ送信機は、前記一次データを構成する複数種類のデータを前記種類に応じて異なるタイミングで送信し、
前記一次データ取得部は、前記データ送信機からいずれかの種類のデータを受信した際に、当該データと、前記データ送信機から過去に受信した他の種類のデータと、を組み合わせて前記一次データを再現する、巡回経路生成装置。
【請求項９】
巡回対象の各地点を巡回する際の巡回経路を生成する巡回経路生成装置の制御方法であって、
前記巡回経路生成装置が、
前記各地点のそれぞれの位置を示すデータ及び前記各地点の巡回の必要性に関わるデータを含む、前記各地点ごとに定められた仕様の一次データを受信し、
前記各地点の一次データを、前記巡回経路を生成するために定められた所定仕様の二次データに変換し、
前記各地点の二次データを用いて、前記巡回経路を生成する、
巡回経路生成装置の制御方法。
【請求項１０】
巡回対象の各地点を巡回する際の巡回経路を生成するためのコンピュータに、
前記各地点のそれぞれの位置を示すデータ及び前記各地点の巡回の必要性に関わるデータを含む、前記各地点ごとに定められた仕様の一次データを受信する手順と、
前記各地点の一次データを、前記巡回経路を生成するために定められた所定仕様の二次データに変換する手順と、
前記各地点の二次データを用いて、前記巡回経路を生成する手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、巡回経路生成装置、巡回経路生成方法及びプログラムに関する。
【背景技術】
【０００２】
今日、様々な場所に自動販売機が設置されており、日々の生活を便利なものにしている。一方で、自動販売機は商品の補充や釣銭の回収、清掃、修理などのメンテナンスが欠かせない。そのため、自動販売機のメンテナンス業者は、日々、各地の自動販売機に数多くの作業員を派遣している。
【０００３】
そして、このような自動販売機のメンテナンス作業を効率化するために、各地に点在する自動販売機から商品の販売数等のデータをネットワークを介して収集し、これらのデータと各自動販売機の設置場所を元に、自動販売機の効率的な巡回経路を生成するようなシステムが開発されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−０４２２１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような複数の訪問先を担当者が巡回してくるような業務は、自動販売機のメンテナンス業務の他にも、荷物の配送業務やセールスマンの顧客回りなど、様々に存在する。そのため、システム開発業者のもとには、様々な企業から、巡回経路の生成処理を伴うシステム開発の依頼がなされる場合がある。
【０００６】
この場合、巡回経路を生成するアルゴリズム自体はどの企業向けであっても変わらないものの、巡回経路を生成する際に用いられるデータの仕様や内容が、各企業ごとに異なっているため、システム開発業者は、各企業の仕様に合わせて、ソフトウェアを作り替えるカスタム開発を行う必要がある。このため、開発工数や開発期間が増大し、コストの増加要因にもなっている。
【０００７】
本発明はこのような課題を鑑みてなされたものであり、ソフトウェアのカスタム開発を行わなくても様々な仕様に対応可能な汎用性の高い巡回経路生成装置、巡回経路生成方法及びプログラムを提供する。
【課題を解決するための手段】
【０００８】
本発明の一実施形態に係る巡回経路生成装置は、巡回対象の各地点を巡回する際の巡回経路を生成する巡回経路生成装置であって、前記各地点のそれぞれの位置を示すデータ及び前記各地点の巡回の必要性に関わるデータを含む、前記各地点ごとに定められた仕様の一次データを取得する一次データ取得部と、前記各地点の一次データを、前記巡回経路を生成するために定められた所定仕様の二次データに変換するデータ変換部と、前記各地点の二次データを用いて、前記巡回経路を生成する巡回経路生成部と、を備える。
【０００９】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄の記載、及び図面の記載等により明らかにされる。
【発明の効果】
【００１０】
ソフトウェアのカスタム開発を行わなくても様々な仕様に対応可能な汎用性の高い巡回経路生成装置、巡回経路生成方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】巡回経路生成システムの全体構成図である。
【図２】自動販売機のハードウェア構成を示す図である。
【図３】巡回経路生成装置のハードウェア構成を示す図である。
【図４】巡回経路生成装置の機能構成を示す図である。
【図５】巡回経路生成装置を説明するための図である。
【図６】巡回経路生成装置が取得するデータの具体例を示す図である。
【図７】巡回経路生成装置が取得するデータの具体例を示す図である。
【図８】ルールの具体例を示す図である。
【図９】ルールの具体例を示す図である。
【図１０】ルールの具体例を示す図である。
【図１１】ルールの具体例を示す図である。
【図１２】ルールの内容を示す図である。
【図１３】巡回経路生成システムの全体構成図である。
【図１４】巡回経路生成装置が取得するデータの具体例を示す図である。
【図１５】巡回経路生成装置が取得するデータの具体例を示す図である。
【図１６】ルールの具体例を示す図である。
【図１７】ルールの具体例を示す図である。
【発明を実施するための形態】
【００１２】
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。以下、本発明を実施形態に即して添付図面を参照しつつ説明する。
【００１３】
[第１実施形態]
＝＝全体構成＝＝
図１に、本発明の第１実施形態に係る巡回経路生成システム１を示す。巡回経路生成システム１は、巡回経路生成装置１０と、複数の自動販売機２Ａ、２Ｂと、が通信ネットワーク５（図１には不図示）を介して通信可能に接続されて構成されている。通信ネットワーク５はインターネットやＬＡＮ（Local Area Network）、電話網等の各種の情報通信網である。
【００１４】
自動販売機２Ａ、２Ｂは、利用者から所定金額の金銭が投入されると、飲料や食品などの各種商品を利用者に提供する設備ないし装置（以下、デバイス２０とも記載する）である。
【００１５】
本実施形態では、自動販売機２Ａは、自動販売機２Ａのメンテナンス業者であるＡ社（例えば、自動販売機２Ａの製造メーカの関連会社）の作業員によってメンテナンスが行われる。自動販売機２Ｂは、自動販売機２Ｂのメンテナンス業者であるＢ社（例えば、自動販売機２Ｂの製造メーカの関連会社）の作業員によってメンテナンスが行われる。
【００１６】
自動販売機２Ａ、２Ｂは、それぞれの位置を示すデータ及び巡回の必要性に関わるデータを含む一次データを通信ネットワーク５を介して定期的に（例えば毎日所定時刻に）、あるいは不定期に（例えば巡回経路生成装置１０から送信されるリクエストに応答する際に）巡回経路生成装置１０に送信する。
【００１７】
自動販売機２Ａ、２Ｂから送信される一次データは、各自動販売機２Ａ、２Ｂごとに定められている。自動販売機２Ａから送信される一次データは、所定の第１仕様に準拠している。第１仕様は例えば自動販売機２Ａの製造メーカあるいはＡ社によって定められた仕様である。また自動販売機２Ｂから送信される一次データは、所定の第２仕様に準拠している。第２仕様は例えば自動販売機２Ｂの製造メーカあるいはＢ社によって定められた仕様である。そのため、自動販売機２Ａから送信される一次データと自動販売機２Ｂから送信される一次データは、データの内容やフォーマットなどが互いに異なっている。
【００１８】
巡回の必要性に関わるデータとしては、例えば商品の残量あるいは補充可能量、紙幣や硬貨の残量、故障発生時のエラーコードや機器の状態を示すコードや数値データ、前回のメンテナンスからの経過時間などであり、第１仕様及び第２仕様においてそれぞれ定められている。
【００１９】
Ａ社の作業員は、職場や営業所などの拠点Ａ（３Ａ）を起点及び終点として自動販売機２Ａを巡回する。同様に、Ｂ社の作業員は、拠点Ｂ（３Ｂ）を起点及び終点として自動販売機２Ｂを巡回する。
【００２０】
巡回経路生成装置１０は、作業員が巡回対象の各地点を巡回する際の巡回経路を生成する情報処理装置である。図１に示す例では、巡回経路生成装置１０は、自動販売機２Ａから送信されてきた第１仕様の一次データを元に、Ａ社の作業員が自動販売機２Ａを巡回する際の巡回経路を生成するＡ社用プラットフォーム１００Ａと、自動販売機２Ｂから送信されてきた第２仕様の一次データを元に、Ｂ社の作業員が自動販売機２Ｂを巡回する際の巡回経路を生成するＢ社用プラットフォーム１００Ｂと、を有する。
【００２１】
Ａ社用プラットフォーム１００Ａ及びＢ社用プラットフォーム１００Ｂは、クラウドや巡回経路生成装置１０上の仮想マシンとして構成されても良いし、それぞれに専用に用意されたハードウェアを用いて構成されても良い。
【００２２】
Ａ社用プラットフォーム１００Ａは、ルールＡ（１００１Ａ）と、ストレージ１００２Ａと、ルールエンジン１００３Ａと、巡回経路エンジン１００４Ａとを有しており、Ｂ社用プラットフォーム１００Ｂは、ルールＢ（１００１Ｂ）と、ストレージ１００２Ｂと、ルールエンジン１００３Ｂと、巡回経路エンジン１００４Ｂとを有している。
【００２３】
ストレージ１００２Ａは、各自動販売機２ＡからＡ社用プラットフォーム１００Ａに送信されてきた第１仕様の一次データを記憶する。
【００２４】
ルールＡ（１００１Ａ）には、自動販売機２Ａから取得した一次データを二次データに変換するための変換ルールが記憶されている。二次データは、巡回経路エンジン１００４Ａが巡回経路を生成するために定められた所定仕様のデータである。
【００２５】
ルールエンジン１００３Ａは、ルールＡ（１００１Ａ）を参照して、自動販売機２Ａから取得した一次データを二次データに変換する。
【００２６】
巡回経路エンジン１００４Ａは、ルールエンジン１００３Ａによって変換された二次データを用いて、山登り法などのような、公知の経路探索アルゴリズムを実行することにより、Ａ社の作業員が自動販売機２Ａを巡回する際の巡回経路を生成する。
【００２７】
このような態様によって、巡回経路エンジン１００４Ａは、自動販売機２Ａから送られてくる一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。
【００２８】
これにより、ルールＡ（１００１Ａ）を一次データの仕様に合わせて設定しておけば、例えば、ストレージ１００２Ａ、ルールエンジン１００３Ａ、及び巡回経路エンジン１００４Ａを、共通プラットフォーム１００５Ａとして構築するようなことも可能となる。そしてこの場合、一次データの仕様変更があっても、ルールＡ（１００１Ａ）を更新するのみで共通プラットフォーム１００５Ａには手を加えることなく、迅速に仕様変更に対応することが可能となる。
【００２９】
Ａ社用プラットフォーム１００Ａと同様に、Ｂ社用プラットフォーム１００Ｂにおいて、ストレージ１００２Ｂは、各自動販売機２ＢからＢ社用プラットフォーム１００Ｂに送信されてきた一次データを記憶する。
【００３０】
ルールＢ（１００１Ｂ）には、自動販売機２Ｂから取得した一次データを二次データに変換するための変換ルールが記憶されている。二次データは、巡回経路エンジン１００４Ｂが巡回経路を生成するために定められた所定仕様のデータである。この所定仕様は、ルールエンジン１００３Ａが出力する二次データと同じ仕様あるいは互換性がある仕様である。
【００３１】
ルールエンジン１００３Ｂは、ルールＢ（１００１Ｂ）を参照して、自動販売機２Ｂから取得した一次データを二次データに変換する。
【００３２】
巡回経路エンジン１００４Ｂは、ルールエンジン１００３Ｂによって生成された二次データを用いて、山登り法などのような、公知の経路探索アルゴリズムを実行することにより、Ｂ社の作業員が自動販売機２Ｂを巡回する際の巡回経路を生成する。
【００３３】
このような態様によって、巡回経路エンジン１００４Ｂは、自動販売機２Ｂから送られてくる一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。
【００３４】
これにより、ルールＢ（１００１Ｂ）を一次データの仕様に合わせて設定しておけば、例えば、ストレージ１００２Ｂ、ルールエンジン１００３Ｂ、及び巡回経路エンジン１００４Ｂを、共通プラットフォーム１００５Ｂとして構築するようなことも可能となる。そしてこの場合、一次データの仕様変更があっても、ルールＢ（１００１Ｂ）を更新するのみで共通プラットフォーム１００５Ｂには手を加えることなく、迅速に仕様変更に対応することが可能となる。
【００３５】
以上のように、Ａ社に提供する共通プラットフォーム１００５Ａも、Ｂ社に提供する共通プラットフォーム１００５Ｂも、同じソフトウェアを用いて構築することができるので、ソフトウェアの開発工数を大幅に削減でき、開発期間及び開発コストの削減が可能となる。
【００３６】
上記実施形態では、Ａ社及びＢ社が個別に共通プラットフォーム１００５Ａ，１００５Ｂを用いる構成としたが、これに限らず、Ａ社及びＢ社が共通プラットフォーム１００５を共用し、ルールＡ（１００１Ａ）とルールＢ（１００１Ｂ）のみを個別に用意しておくようにしても良い。
【００３７】
この場合、巡回経路生成装置１０は、自動販売機２Ａ、２Ｂから受信した一次データの仕様を判別したうえで、第１仕様であればルールＡ（１００１Ａ）を参照し、第２仕様であればルールＢ（１００１Ｂ）を参照し、それぞれ、所定仕様の二次データに変換する。
【００３８】
巡回経路生成装置１０は、種々の公知の方法を用いて一次データの仕様判別を行うことができる。例えば一次データ内の特定ビット位置のビットパターンから仕様を判別できる。あるいは、自動販売機２Ａ，２Ｂから送信される一次データ内に、巡回経路生成装置１０が仕様を特定できるようにするための情報を明示的に含めるようにしても良い。
【００３９】
なお以下の説明では、自動販売機２Ａ、２Ｂを区別する必要がない場合は、自動販売機２あるいはデバイス２０と記載する。またＡ社、Ｂ社をまとめてメンテナンス業者あるいはユーザとも記す。また拠点Ａ（３Ａ）と拠点Ｂ（３Ｂ）をまとめて拠点３とも記す。
【００４０】
また同様に、ルールＡ（１００１Ａ）とルールＢ（１００１Ｂ）、ストレージ１００２Ａとストレージ１００２Ｂ、ルールエンジン１００３Ａとルールエンジン１００３Ｂ、巡回経路エンジン１００４Ａと巡回経路エンジン１００４Ｂ、共通プラットフォーム１００５Ａと共通プラットフォーム１００５Ｂ、Ａ社用プラットフォーム１００ＡとＢ社用プラットフォーム１００Ｂについても、区別する必要がない場合には、それぞれ、ルール１００１、ストレージ１００２、ルールエンジン１００３、巡回経路エンジン１００４、共通プラットフォーム１００５、プラットフォーム１００と記載する。
【００４１】
また本実施形態では、各地に設置される自動販売機２等のデバイス２０を作業員が巡回して商品等の物資を補給する際の巡回経路を巡回経路生成装置１０が生成する場合を例に説明するが、各地に設けられる農業用給水タンクの監視業務など、他の様々な業務に適用できる。
【００４２】
なお図１には、巡回経路生成装置１０が第１仕様及び第２仕様の２種類の仕様の一次データを取得して二次データに変換する場合を示したが、３種類以上の仕様の一次データを取得して二次データに変換する場合も同様である。また、巡回経路生成装置１０が１種類の仕様の一次データを取得して二次データに変換する場合も同様である。
【００４３】
以下、本実施形態では、説明の簡単化のために、巡回経路生成装置１０が１種類の仕様の一次データを取得して二次データに変換する場合を例に説明する。
【００４４】
＝＝自動販売機＝＝
図２は自動販売機２の主な構成を示すブロック図である。図２に示すように、自動販売機２は、プロセッサ２１、記憶装置２２、通信装置（データ送信機）２３、販売制御機構２４、金銭受付機構２５、及び商品残量検出機構２６を備える。
【００４５】
プロセッサ２１は、例えば、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）を用いて構成される。記憶装置２２は、プログラムやデータを記憶する装置であり、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、不揮発性半導体メモリ（ＮＶＲＡＭ（Non Volatile RAM））等である。
【００４６】
プロセッサ２１及び記憶装置２２は、自動販売機２の統括的な制御を行う主制御部を構成する。プロセッサ２１及び記憶装置２２は、例えば、通信装置２３を介して提供される仮想的な情報処理資源（例えば、クラウドシステム（Cloud System）により提供されるクラウドサーバ（Cloud Server）等）を用いて実現されるものであってもよい。
【００４７】
記憶装置２２には様々な種類のデータが記憶されている。例えば記憶装置２２には、自動販売機２の識別情報や位置情報（例えば緯度及び経度）、商品レーンごとの在庫可能最大量、商品レーンごとの商品の残量、商品レーンごとの商品の補充可能量、商品レーンごとの商品の一日の販売予測数、メンテナンスの履歴情報、自動販売機２が設置されているビル名や識別情報、ビルの営業時間、来訪時の駐車場の位置情報、この駐車場に駐車可能な車両サイズ、自動販売機２の重要度、メンテナンス作業時の予想作業時間、等の様々な情報が記憶されている。
【００４８】
これらの情報は、データの種類に応じて、事前に作業員によって設定されるか、あるいは自動販売機２が備える各種センサにより検出されて、記憶装置２２に記憶される。
【００４９】
通信装置２３は、例えば、無線通信モジュール、ＮＩＣ（Network Interface Card）等を用いて構成される。通信装置２３は、通信ネットワーク５を介した巡回経路生成装置１０等の他の装置との間の通信を実現する。通信装置２３は、他の装置から情報を受け付ける入力装置として機能させることもできる。
【００５０】
なお、通信装置２３は、自動販売機２の１つの構成要素として設けられても良いし、自動販売機２とは別の構成要素として設けられても良い。後者の場合、通信装置２３は、自動販売機２と同位置に設けられてもよいし、自動販売機２から離れた位置に設けられてもよい。
【００５１】
通信装置２３は、記憶装置２２に記憶されている情報を元に、図６に例示する複数種類のデータからなる一次データを、巡回経路生成装置１０に定期的あるいは不定期に送信する。例えば、通信装置２３は、毎日、所定時刻に上記一次データを巡回経路生成装置１０に送信する。あるいは通信装置２３は、巡回経路生成装置１０から一次データの送信リクエストを受信した際に一次データを送信する。
【００５２】
ただし、通信装置２３は、図６に示す全てのデータを毎回送信しなくても良い。例えば、通信装置２３は、一次データを構成する複数種類のデータを、種類に応じて異なるタイミングで送信するようにしても良い。
【００５３】
例えば通信装置２３は、自動販売機２の位置情報やビルの識別情報、ビルの営業時間、駐車場の位置情報などのように、内容が日々変化しないデータ（固定データとも記す）については、例えば毎月１回と巡回経路生成装置１０からリクエストを受信した場合にだけ送信し、商品の補充可能量のように日々変化するデータ（変動データとも記す）については、毎日所定時刻に送信し、巡回経路生成装置１０からリクエストを受信した場合にも送信する。
【００５４】
なおこの場合、巡回経路生成装置１０は、自動販売機２からいずれかの種類のデータを受信した際に、当該データと、自動販売機２から過去に（例えば直近に）受信した他の種類のデータと、を組み合わせて一次データを再現するようにする。
【００５５】
このような態様により、自動販売機２から巡回経路生成装置１０へのデータ送信量を削減することが可能となる。
【００５６】
あるいは、固定データをあらかじめプラットフォーム１００のストレージ１００２に記憶しておき、通信装置２３は固定データを送信しないようにしても良い。この場合、巡回経路生成装置１０は、変動データを通信装置２３から受信した場合に、当該変動データと、ストレージ１００２に予め記憶されている固定データとを組み合わせて一次データを再現するようにする。
【００５７】
このような態様によっても、自動販売機２から巡回経路生成装置１０へのデータ送信量を削減することが可能となる。
【００５８】
販売制御機構２４は、機械式機構や電子回路等を用いて構成され、自動販売機２の利用者に商品を提供する際に制御される機構を含む。販売制御機構２４は、例えば、自動販売機２の内部の商品棚や商品排出機構、自動販売機２の外部の商品選択ボタンや代金支払い用ＩＣカードのリーダライタ、各種表示ランプ、ディスプレイ等を含む。
【００５９】
金銭受付機構２５は、硬貨選別機（コインメック）や紙幣選別機（ビルバリ）としての機構を含み、例えば、利用者が投入する硬貨や紙幣の受け入れ、選別、貯留、自動販売機２内に釣銭用に保有する硬貨や紙幣の枚数の制御等を行う。
【００６０】
商品残量検出機構２６は、自動販売機２の商品残量を検出する。商品残量検出機構２６は、例えば、機械式または電子式の残量計数機構、光学式センサ、感圧センサ等を用いて構成される。商品残量検出機構２６は、自動販売機２が販売する商品の性質に応じた種々の構成を取り得る。
【００６１】
なお自動販売機２は、プロセッサ２１が記憶装置２２に格納されているプログラムを読み出して実行することにより自動販売機２が有する様々な機能を実現する。
【００６２】
例えば自動販売機２は、記憶装置２２に記憶されている各レーンの在庫可能最大量と各レーンの商品残量とに基づき、各レーンの商品補充可能量を求める。本実施形態では、自動販売機２は、在庫可能最大量と商品残量の差を商品補充可能量として求める。
【００６３】
また自動販売機２は、各レーンの商品の一日の販売予測数を求める。自動販売機２は、過去所定期間（例えば過去１週間）の各商品の毎日の補充可能量を統計処理する（例えば平均値を求める）ことにより、各商品の一日の販売予測数を求める。
【００６４】
上記のプログラムは、例えば、可搬型記録媒体（ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、フラッシュメモリ等）から図示しない可搬型記録媒体の読取装置を介して記憶装置２２にロードされる。また上記のプログラムは、例えば、上記プログラムを蓄積管理する図示しない配信装置から通信ネットワーク５を介して自動販売機２にダウンロードされる。
【００６５】
＝＝巡回経路生成装置＝＝
図３は巡回経路生成装置１０の主な構成を示すブロック図である。図３に示すように、巡回経路生成装置１０は、プロセッサ１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、及び通信装置１６を備える。これらは図示しないバス等のデータ転送路を介して互いに接続されている。
【００６６】
巡回経路生成装置１０は、例えば、仮想サーバやクラウドシステムにおけるクラウドサーバのように仮想的なリソースを用いて実現されるものでもよい。また巡回経路生成装置１０は、例えば、通信可能に接続された複数の情報処理装置やプロセッサによって実現してもよい。
【００６７】
プロセッサ１１は、例えば、ＣＰＵ、ＭＰＵ、ＧＰＵ（Graphics Processing Unit）等を用いて構成されている。プロセッサ１１が、主記憶装置１２に格納されている本実施形態に係るプログラムを読み出して実行することにより、巡回経路生成装置１０の様々な機能が実現される。主記憶装置１２は、プログラムやデータを記憶する装置であり、例えば、ＲＯＭ、ＲＡＭ、不揮発性半導体メモリ等である。
【００６８】
補助記憶装置１３は、例えば、ハードディスクドライブ、半導体メモリ（ＳＳＤ、ＳＤメモリカード、ＵＳＢメモリ等）、光学式記憶装置（ＣＤ、ＤＶＤ等）の読取／書込装置等）、クラウドサーバの記憶領域等である。補助記憶装置１３に格納されているプログラムやデータは主記憶装置１２に随時ロードされる。補助記憶装置１３は、例えば、ＮＡＳ（Network Attached Storage）のように通信手段を介してプロセッサ１１と通信可能に接続するものであってもよい。
【００６９】
入力装置１４は、外部からデータやコマンドの入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、タッチパネル、可搬型記録媒体の読取装置等である。出力装置１５は、処理経過や処理結果等の各種情報を外部に提供するユーザインタフェースであり、例えば、画面表示装置（ＬＣＤ（Liquid Crystal Display）、ＧＰＵ等）、印字装置、可搬型記録媒体の書込装置等である。
【００７０】
通信装置１６は、通信ネットワーク５を介して行われる他の装置との間の通信を実現する有線方式または無線方式の通信インタフェースであり、例えば、無線通信モジュールやＮＩＣ等である。尚、例えば、通信装置１６を介して他の装置との間で情報の入力や出力を行う構成、即ち通信装置１６が入力装置１４や出力装置１５として機能する構成としてもよい。
【００７１】
図４に巡回経路生成装置１０が備える主な機能を示す。図４に示すように、巡回経路生成装置１０は、一次データ取得部１０１、データ変換部１０２、変換ルール記憶部１０３、変換ルール入力部１０４、変換ルール更新部１０５、巡回経路生成部１０６の各機能を備える。
【００７２】
巡回経路生成装置１０の各機能は、例えば、プロセッサ１１が主記憶装置１２に格納されているプログラムを読み出して実行することにより実現される。上記のプログラムは、例えば、可搬型記録媒体から入力装置１４を介して主記憶装置１２にロードされる。また上記のプログラムは、例えば、上記プログラムを蓄積管理する図示しない配信装置から通信ネットワーク５を介して巡回経路生成装置１０にダウンロードされる。
【００７３】
＜一次データ取得部＞
一次データ取得部１０１は、巡回対象の各地点の自動販売機２から、それぞれの位置を示すデータ及び巡回の必要性に関わるデータを含む各地点毎に定められた仕様（例えば第１仕様や第２仕様）の一次データを取得する。
【００７４】
位置を示すデータは、図６に例示する一次データの場合、「自動販売機２が設置されているビルのＩＤ」（building_id）や、「自動販売機２の緯度経度」（installation_location）、「訪問時に使用する駐車場の緯度経度」（parking_lot）が含まれる。
【００７５】
巡回の必要性に関わるデータは、図６に例示する一次データの場合、「商品１の補充可能量」（item1_free）、「商品２の補充可能量」（item2_free）、「商品３の補充可能量」（item3_free）、「商品１が一日で売れる量の予測値」（item1_daily_consumption）、「商品２が一日で売れる量の予測値」（item2_daily_consumption）、「商品３が一日で売れる量の予測値」（item3_daily_consumption）、「自動販売機２の重要度」（importance_level）、「最大在庫量」（item_capacity）が含まれる。
【００７６】
なお図６には示されていないが、後述するように、「商品１の残量」（item1_remaining）、「商品２の残量」（item2_remaining）、「商品３の残量」（item3_remaining）も巡回の必要性に関わるデータに含まれる。
【００７７】
また上述したように、各自動販売機２は全てのデータを毎回送信しなくても良く、一次データを構成する複数種類のデータを、種類に応じて異なるタイミングで送信するようにしても良い。
【００７８】
この場合、一次データ取得部１０１は、自動販売機２からいずれかの種類のデータを受信した際に、当該データと、この自動販売機２から過去に受信した他の種類のデータと、を組み合わせて一次データを再現する。
【００７９】
例えば、各地の自動販売機２が、図６に示す一次データの内、自動販売機２の緯度経度、自動販売機２が設置されているビルのＩＤ、ビルの営業時間、駐車場の緯度経度については、１か月に１回の頻度で巡回経路生成装置１０に送信し、他のデータについては毎日所定時刻に巡回経路生成装置１０に送信するように設定されている場合には、巡回経路生成装置１０は、自動販売機２から毎日所定時刻に他のデータを受信する毎に、１か月に１回しか送られてこない上記の各データが送信されてこなかった場合には、これらのデータについては、過去（例えば直近）に受信したデータで補うことによって一次データを再現する。
【００８０】
このような態様により、自動販売機２から巡回経路生成装置１０へのデータ送信量を削減することが可能となる。
【００８１】
また上述したように、自動販売機２の位置を示すデータや商品の在庫可能最大量等の固定データをプラットフォーム１００のストレージ１００２に記憶しておくようにし、自動販売機２からは、商品の補充可能量のような変動データのみが送信されるようにすることもできる。この場合一次データ取得部１０１は、変動データを自動販売機２から受信した際に、当該変動データと、ストレージ１００２に予め記憶されている固定データとを組み合わせることで一次データを取得する。
【００８２】
また一次データ取得部１０１は、図７に示す車両情報も受信する。車両情報は、作業員が各地の自動販売機２を巡回する際に利用する不図示の車両（車両が具備する通信装置）、あるいは作業員が携帯する不図示の情報端末から、定期的（例えば１０分毎）に、あるいは不定期に（例えば車両が巡回経路生成装置１０からの送信リクエストを受信した際に）送信される情報であり、本実施形態では、「車両ＩＤ」（vehicle_id）、「車両の現在位置の緯度」（latitude）、「車両の現在位置の経度」（longitude）、「車両のサイズ」（vehicle_size）が含まれる。
【００８３】
巡回経路生成装置１０は、これらの車両や携帯端末から送信されてくる車両情報も用いて、巡回経路を生成しても良い。例えば巡回経路生成装置１０は、各自動販売機２から受信した「車両のサイズの制限」（vehicle_limit）と、車両から受信した車両情報の「車両のサイズ」（vehicle_size）とを比較し、ルートマンが巡回に用いる車両を駐車する駐車場が確保できない巡回地点を経路に含まないように、巡回経路を生成する。
【００８４】
このような態様により、巡回に使用する車両のサイズを考慮した巡回経路を生成することが可能となる。
【００８５】
＜データ変換部＞
データ変換部１０２は、各地点の一次データを、巡回経路を生成するために定められた所定仕様の二次データに変換する。
【００８６】
このような態様により、巡回経路生成部１０６は、各地点の一次データの仕様がどのような仕様であっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。
【００８７】
なお本実施形態では、データ変換部１０２はルールエンジン１００３として具現化されている。
【００８８】
＜変換ルール記憶部＞
変換ルール記憶部１０３は、一次データを所定仕様の二次データに変換するための変換ルールを記憶する。そしてデータ変換部１０２は、この変換ルールを用いて一次データを二次データに変換する。本実施形態では、変換ルール記憶部１０３はルール１００１として具現化されている。
【００８９】
本実施形態に係るルール１００１の一部を、具体例として図８及び図９に示す。
【００９０】
図８は、一次データがＮｏ１〜Ｎｏ８に示す各条件にあてはまるか否かを判定するためのテーブルであり、図９は、一次データが上記Ｎｏ１〜Ｎｏ８の何れかにあてはまった場合に、一次データから二次データへ変換する方法を定義したテーブルである。
【００９１】
なお、図８及び図９に示すルール１００１は、自動販売機２から変動データのみならず固定データも送信される場合の例である。
【００９２】
具体的に説明すると、まず図８において、Ｎｏ１は、一次データ取得部１０１が受信したデータが、自動販売機２から送信されたデータであるか否かを判定するものである。
【００９３】
一次データ取得部１０１が受信したデータは、メンテナンス業者ごとに任意に定められたデータ形式であり、条件Ｎｏ１に記載されている"obj"は、アップロードされたデータ１件を表す。obj.parking_lot.latitudeなどはメンテナンス業者が決めた形式である。
【００９４】
一次データ取得部１０１が受信したデータが、自動販売機２から送信されたデータである場合には、Ｎｏ１の条件を満たすので、図８において「Ａ」〜「Ｉ」と記載されたルールが適用対象となる（図８において「Ａ」〜「Ｉ」に対応する欄に”Ｙ”が記載されている）。
【００９５】
Ｎｏ１の条件を満たすときは、まず、図８においてルール「Ａ」が適用されるので、データ変換部１０２は図９の「Ａ」欄を参照し、一次データを二次データに変換する。
【００９６】
具体的には、図９のＮｏ９に記載されているように、"obj.device_id"という一次データが、"LOCATION.PLACE_ID"という二次データに変換される。"LOCATION"は、巡回対象地点に関する情報であることを表す。
【００９７】
また図９のＮｏ１０に記載されているように、"obj.parking_lot.latitude"という一次データが、"LOCATION.LATITUDE"という二次データに変換される。同様に、図９のＮｏ１１に記載されているように、"obj.parking_lot.longitude"という一次データが、"LOCATION.LONGITUDE"という二次データに変換される。
【００９８】
図９のＮｏ１３には、"LOCATION.REPLENISHMENT"という二次データが、"(obj.item_capacity-obj.item1_remaining+obj.item1_daily_consumption) + (obj.item_capacity-obj.item2_remaining+obj.item2_daily_consumption) + (obj.item_capacity-obj.item3_remaining+obj.item3_daily_consumption)"という算術式を用いて、一次データから変換されることが記載されている。
【００９９】
さらに図９のＮｏ１４に記載されているように、"obj.estimate_work_minutes"という一次データが、"LOCATION.WORK_TIME"という二次データに変換される。
【０１００】
また図９のＮｏ１６に記載されているように、"obj.vehicle_limit"という一次データが、"LOCATION.VEHICLE_LIMIT"という二次データに変換される。
【０１０１】
次に、図８においてルール「Ｂ」「Ｃ」「Ｄ」が適用される場合について説明する。この場合、データ変換部１０２は、"obj.business_hour"という一次データの値が"type1"である場合は、Ｎｏ２の条件を満たすので、ルール「Ｂ」が適用され、図９の「Ｂ」欄を参照して"LOCATION.DURATIONという二次データの値を"{900,1800}"に設定する。また"type2"である場合は、Ｎｏ３の条件を満たすので、ルール「Ｃ」が適用され、図９の「Ｃ」欄を参照して"{900,1300}"に設定する。同様に、"type3"である場合は、Ｎｏ４の条件を満たすので、ルール「Ｄ」が適用され、図９の「Ｄ」欄を参照して"{1300,1800}"に設定する。
【０１０２】
次に、図８においてルール「Ｅ」「Ｆ」「Ｇ」が適用される場合について説明する。
【０１０３】
この場合、データ変換部１０２は、一次データに含まれるデータが図８のＮｏ５に示した条件式を満たす場合、ルール「Ｅ」が適用され、図９の「Ｅ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"EXCLUDED"（巡回不要地点）にする。
【０１０４】
図８のＮｏ５において、"item1_remaining"、"item2_remaining"、"item3_remaining"は、商品１、商品２、商品３の商品残量を表すが、上述したように、商品残量は商品の在庫可能最大量と商品補充可能量の差として換算可能である。このため、"item1_remaining"、"item2_remaining"、"item3_remaining"も巡回の必要性に関わるデータに含まれる。
【０１０５】
条件Ｎｏ５は、各レーンごとに、在庫可能量に対する、１日の終わりの時点（例えば午後５時）の商品残量（１次データ送信時点（例えば午前７時）の残量から１日の予想消費量を引いた量）の割合を求め、この割合を商品の補充の必要性を示す指標値としている。そしてデータ変換部１０２は、この指標値が０．８（８割）を超えている場合に巡回不要と判断している。
【０１０６】
一方、データ変換部１０２は、一次データに含まれるデータが、図８のＮｏ６に示す条件式を満たす場合、ルール「Ｆ」が適用され、図９の「Ｆ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"MANDATORY"（巡回必須地点）にする。
【０１０７】
図８のＮｏ６においても、"item1_remaining"、"item2_remaining"、"item3_remaining"は、商品１、商品２、商品３の商品残量であり、Ｎｏ５と同様に、巡回の必要性に関わるデータである。
【０１０８】
図８のＮｏ６では、各レーンごとに、１日の終わりの時点（例えば午後５時）の商品残量（１次データ送信時点（例えば午前７時）の残量から１日の予想消費量を引いた量）を求め、この残量を商品の補充の必要性を示す指標値としている。そしてデータ変換部１０２は、この指標値が、重要度のレベルがＡの自動販売機２では１０未満、重要度のレベルがＢの自動販売機２では０未満の場合に巡回必須と判断している。
【０１０９】
また、一次データに含まれるデータが図８のＮｏ５及びＮｏ６のいずれの条件式も満たさない場合、ルール「Ｇ」が適用され、データ変換部１０２は、図９の「Ｇ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"AUTO"（自動設定）にする。
【０１１０】
もしルール「Ｇ」を設けずに、各巡回地点のそれぞれに対してルール「Ｅ」「Ｆ」のみを適用した場合には、各自動販売機２の状態によっては、巡回すべき地点の数が多すぎたり少なすぎたりする場合がある。例えば「巡回必須地点」の数が多すぎる場合、全ての「巡回必須地点」を１日で巡回しきれないような巡回経路が生成される可能性がある。
【０１１１】
これを防止するため、巡回の優先度に「自動設定」を設ける。「自動設定」になっている地点は、以下のようにして「巡回任意地点」と「巡回必須地点」と「巡回不要地点」に振り分けられる。
【０１１２】
まず、巡回経路生成装置１０に、作業者１人当たり、「巡回必須地点」をＸ地点、「巡回任意地点」をＹ地点割り当てる、という設定をしておく。
【０１１３】
そしてデータ変換部１０２は、「自動設定」に設定されている地点を重要度順にソートする。重要度は、メンテナンス業者と取り交わされたＳＬＡ（Service Level Agreement）によって自動販売機２毎に定められるが（後述するＮｏ７）、図１２に示す様に、自動販売機２のセンサ値やセンサ値の変動量等に応じて定められるようにしても良い。
【０１１４】
そしてデータ変換部１０２は、重要度が高い順に、以下の（式１）によって定まる数の地点を「巡回必須地点」にし、"LOCATION.PRIORITY"の値を設定する。
【０１１５】
作業者数×Ｘ−優先度がすでに「巡回必須地点」に設定されている地点数  …（式１）
次に、データ変換部１０２は、（式２）によって定まる数の地点を、「巡回任意地点」に設定し、"LOCATION.PRIORITY"の値を設定する。
【０１１６】
作業者数×Ｙ−優先度がすでに「巡回任意地点」に設定されている地点数  …（式２）
そしてデータ変換部１０２は、残りの地点を「巡回不要地点」に設定し、"LOCATION.PRIORITY"の値を設定する。
【０１１７】
これにより、「自動設定」となった各地点のうち、相対的に重要度が高い地点を優先的に巡回させることができる。
【０１１８】
このようにして、二次データには、巡回対象の地点が、必ず巡回するべき「巡回必須地点」であるか、巡回してもしなくて良い「巡回任意地点」であるか、あるいは巡回しない「巡回不要地点」であるか、のいずれであるかを示すデータ（LOCATION.PRIORITY）が含まれており、データ変換部１０２は、巡回対象の各地点の一次データに含まれる巡回の必要性に関わるデータを元に、各地点を、巡回必須地点、巡回任意地点、又は巡回不要地点のいずれかに分類し、その結果を各地点の二次データとして生成している。
【０１１９】
このように二次データを生成しておくことで、巡回経路生成部１０６が巡回経路を生成する際に、全ての巡回必須地点が経路に含まれ、かつ、全ての巡回不要地点が経路に含まれないような巡回経路が生成される。
【０１２０】
次に、図８においてルール「Ｈ」「Ｉ」が適用される場合について説明する。
【０１２１】
この場合、データ変換部１０２は、"obj.importance_level"という一次データの値が"A"である場合は、Ｎｏ７の条件を満たすのでルール「Ｈ」を適用し、び図９の「Ｈ」欄を参照して"LOCATION.IMPORTANCE"という二次データの値を1.5×LOCATION.REPLENISHMENTとする。"LOCATION.REPLENISHMENT"は、図９のＮｏ１３により生成される二次データの値である。
【０１２２】
一方、データ変換部１０２は、"obj.importance_level"という一次データの値が"A"でない場合は、Ｎｏ７の条件を満たさないのでルール「Ｉ」を適用し、図９の「Ｉ」欄を参照して"LOCATION.IMPORTANCE"という二次データの値をLOCATION.REPLENISHMENTの値とする。
【０１２３】
次に、図８においてルール「Ｊ」が適用される場合について説明する。
【０１２４】
ルール「Ｊ」は、一次データ取得部１０１が取得したデータがＮｏ８の条件を満たした場合、つまり、一次データ取得部１０１が受信したデータが車両から送信されたデータである場合に適用されるルールである。
【０１２５】
この場合、例えば図９のＮｏ１８に記載されているように、"vehicle.vehicle_id"という一次データが、"VEHICLE.VEHICLE_ID"という二次データに変換される。"VEHICLE"は、車両に関する情報であることを表す。
【０１２６】
また図９のＮｏ１９に記載されているように、"vehicle.latitude"という一次データが、"VEHICLE.LATITUDE"という二次データに変換される。同様に、図９のＮｏ２０に記載されているように、"vehicle.longitude"という一次データが、"VEHICLE.LONGITUDE"という二次データに変換される。
【０１２７】
また図９のＮｏ２１に記載されているように、"vehicle.size"という一次データが、"VEHICLE.SIZE"という二次データに変換される。
【０１２８】
なお、上述した"LOCATION.LATITUDE"、"VEHICLE.LATITUDE"などは、巡回経路生成装置１０側で用意された巡回経路機能のプロパティ値である。
【０１２９】
以上のようにして、データ変換部１０２は、ルール１００１を用いて一次データを二次データに変換する。
【０１３０】
なお図８及び図９に示したように、ルール１００１は、数字やテキスト等の文字を用いて記述することができる。このため、ルール１００１（変換ルール）の記述が容易であり、追加や削除、変更等の更新も容易である。これにより、自動販売機２や一次データの仕様変更があっても、迅速に対応することが可能である。
【０１３１】
またルール１００１は、図８及び図９に示したようにテーブル形式で表現される場合のみならず、"if〜then〜"のような構文式を用いて表現することも可能である。いずれの場合も、変換ルールを文字で表現することにより、容易に記述することが可能である。
【０１３２】
また、図８や図９以外にも、ルール１００１に記述され得る内容例を図１２に示す。図１２に示す様に、ルール１００１には様々な内容を設定することができる。
【０１３３】
＜変換ルール入力部＞
図４に戻って、変換ルール入力部１０４は、新たな変換ルールの入力を受け付けるユーザインタフェースを備え、上述したように、テキストにより変換ルールの入力を受け付ける。変換ルール入力部１０４は、例えば入力装置１４により具現化される。
【０１３４】
＜変換ルール更新部＞
変換ルール更新部１０５は、変換ルール記憶部１０３に記憶されている変換ルールを、新たな変換ルールに更新する。このように、変換ルール入力部１０４及び変換ルール更新部１０５を備えることにより、変換ルールの追加や削除、変更等を行う場合にも迅速に対応することが可能となる。
【０１３５】
＜巡回経路生成部＞
巡回経路生成部１０６は、上記のようにして一次データから変換された二次データを用いて、巡回経路を生成する。本実施形態では、巡回経路生成部１０６は、巡回経路エンジン１００４として具現化されている。
【０１３６】
巡回経路生成部１０６が巡回経路を生成するアルゴリズムは特に問わないが、巡回経路生成部１０６は、例えば、山登り法、シミュレーテッドアニーリング法、遺伝的アルゴリズム、タブーサーチ等を用いて巡回経路を生成する。本実施形態では、巡回経路生成部１０６は、山登り法またはシミュレーテッドアニーリング法を用いて巡回経路を生成する。
【０１３７】
まず巡回経路生成部１０６は、巡回経路の複数の候補（候補経路）を生成する。本実施形態では、巡回経路生成部１０６は、全ての巡回必須地点を経路に含み、全ての巡回不要地点を経路に含まないようにこれらの候補経路を生成する。
【０１３８】
具体的には、巡回経路生成部１０６は、まずは巡回対象の全ての自動販売機２に対して、これらの自動販売機２を所定の順序で（例えばランダムな順序に）並べることにより巡回経路の候補経路（第１候補）を生成する。
【０１３９】
もちろん、第１候補には、全ての巡回任意地点が含まれていなくても良い。この場合は、巡回経路生成部１０６は、巡回対象の全ての地点の中から、少なくとも全ての巡回必須地点を含むように（巡回任意地点は、０個以上が含まれていれば良い。巡回任意地点は例えばランダムに選ぶ）複数の自動販売機２を選択した上で、これらの自動販売機２を所定の順序で並べることにより巡回経路の第１候補を生成する。
【０１４０】
その後、巡回経路生成部１０６は、第１候補に含まれる自動販売機２の中から選択（例えばランダムに選択）した２つの自動販売機２の順序の入れ替えや、第１候補に含まれる巡回任意地点から選択（例えばランダムに選択）した自動販売機２の削除、あるいは、第１候補に含まれない巡回任意地点から選択（例えばランダムに選択）した自動販売機２の巡回経路への組み込みを行い、第２候補を生成する。
【０１４１】
そして巡回経路生成部１０６は、上記第２候補を第１候補として再び上記処理を繰り返すことで、順次、新たな候補経路を生成する。
【０１４２】
そして巡回経路生成部１０６は、上記候補経路のそれぞれに対して、作業員が巡回を開始してから終了するまでの所要時間や巡回経路の経路長、各自動販売機２の巡回の優先度等の様々な指標値を元に、所定のコスト関数を用いてコストを求め、複数の候補経路の中から一つの候補を選出することにより、巡回経路を生成する。
【０１４３】
巡回経路生成部１０６は、生成された巡回経路を、出力装置１５あるいは通信装置１６に出力する。
【０１４４】
以上のような態様により、巡回経路生成装置１０は、自動販売機２から送られてくる一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。そしてこれにより、ソフトウェアのカスタム開発を行わなくても様々な仕様に対応することが可能になる。
【０１４５】
＝＝具体例＝＝
次に、巡回経路生成装置１０の具体的なシステム構成図を図５に示す。なお図５において、自動販売機２はデバイス２０と記載されている。
【０１４６】
遠隔地にあるデバイス２０（自動販売機２など）から、通信ネットワーク５経由でデータが巡回経路生成装置１０にアップロードされる。デバイス２０は、所定のタイミング（１日に１回など）で、デバイス２０の状態（位置情報や最新の商品在庫数など）をデータとしてアップロードする。自動販売機２からアップロードされるデータの例を図６に示す。
【０１４７】
また、巡回作業者のモバイル端末もデバイス２０とみなし、巡回作業者の位置情報などをデータとしてアップロードしても良い。モバイル端末からアップロードされるデータの例を図７に示す。
【０１４８】
デバイス２０から通信ネットワーク５を介して巡回経路生成装置１０に送信されてくるデータは、一次データ取得部１０１が取得する。
【０１４９】
一次データ取得部１０１が取得したデータは、ストレージ１００２に格納されると共に、データ変換部１０２、より具体的にはルールエンジン１００３に入力される。
【０１５０】
なお、デバイス２０が、前回アップロードしたデータとの差分をアップロードした場合（自動販売機２の在庫センサーの値のように、時々刻々変化する変動データだけがアップロードされ、自動販売機２の位置情報のように前回からの変化がない固定データがアップロードされない場合）、一次データ取得部１０１は、ストレージ１００２に保存された既存の固定データとマージして一次データを再現する。
【０１５１】
ルールエンジン１００３は、この一次データに対して、巡回経路生成装置１０のユーザごとに設定されたルール１００１を適用して、巡回経路を生成するための二次データに変換し、巡回地点情報としてストレージ１０２３に格納する。ルールエンジン１００３は、この際、巡回地点のグループ化などを行うため（後述する）、別のデバイス２０がアップロードしたデータを参照することもできる。
【０１５２】
ルールエンジン１００３は、ルール１００１を参照することで、デバイス２０から取得したオブジェクト（一次データ）内の各データを二次データに変換する。
【０１５３】
図６や図７に示した例では、オブジェクトには、巡回経路生成装置１０のユーザの視点で定められた情報（第１仕様あるいは第２仕様の一次データ）が格納されている。
【０１５４】
なお、デバイス２０から最新の補充可能量だけがアップロードされた場合は、一次データ取得部１０１は、あらかじめストレージ１００２に記憶されている既存の緯度経度などのデータとマージすることで図６や図７のようなオブジェクトを再現する。
【０１５５】
ルールエンジン１００３は、オブジェクト１件をルール１００１によって巡回経路生成用の二次データ、具体的には、巡回地点情報や車両情報に変換する。なお巡回地点情報はストレージ１０２３に格納され、車両情報はストレージ１０２４に格納される。
【０１５６】
ルール１００１は、巡回経路生成装置１０のユーザごとに設けられる。ルール１００１は、図８、図９に示したような決定表で表現できる（同じ情報はif-then形式で表現することもできる）。この決定表は、所定のフォーマットのテキストで記述することで作成され、巡回経路生成装置１０に入力される。
【０１５７】
決定表には、アップロードされたデータ（一次データ）と、訪問先の位置情報および車両情報（二次データ）への変換ルールが記述される。
【０１５８】
移動情報取得部１０２２は、ストレージ１０２３に格納された巡回地点情報のうち、緯度経度の情報を取得して、地図１０２１を参照して移動情報を作成する。移動情報取得部１０２２は、任意の２つの地点の緯度経度の組み合わせから、地点間の移動時間を計算して、結果をストレージ１０２５に格納する。
【０１５９】
地図１０２１を参照して移動時間を推定するようにすることにより、生成される巡回経路の精度を高めることができる。
【０１６０】
なお、巡回経路生成装置１０は地図１０２１を具備しても良いし具備しなくても良い。
【０１６１】
巡回経路生成装置１０が地図１０２１を具備する場合は、図５に示したように、巡回経路生成装置１０の内部に地図１０２１を含める。地図１０２１には道路のネットワークが記録されている。そして指定された２地点の直近の道路同士を移動するパスを既存の技術（ダイクストラ法やA*アルゴリズムなど）によって求め、そのパスの距離と特定の速度から移動時間を計算する。地図１０２１の道路を示すパスに想定移動速度のデータを含めても良い。
【０１６２】
一方、地図１０２１を具備しない場合は、巡回経路生成装置１０は、外部の地図１０２１を利用する。
【０１６３】
この場合、巡回経路生成装置１０は、外部の地図サービスに問い合わせて２点間の移動時間を取得する。たとえば、緯度経度を２点指定すると、その地点の間の想定移動時間を返すようなAPI（Application Programming Interface）を提供するような地図サービスを利用可能である。
【０１６４】
巡回経路エンジン１００４は、毎朝の定期処理などで巡回経路が必要になったタイミングで、巡回地点情報、車両情報、移動情報を取得し、巡回対象の各地点を効率よく巡回する巡回経路を計算する。
【０１６５】
次に、上述した複数地点のグループ化について説明する。
【０１６６】
複数地点のグループ化とは、巡回対象の複数の地点のデータを１つの巡回対象地点のデータとしてまとめることである。
【０１６７】
つまり、データ変換部１０２は、複数地点の一次データにそれぞれ含まれる位置を示すデータが同一の場所を示している場合には、これら複数地点の一次データを、上記同一の場所を巡回対象の一つの地点とする二次データに変換する。
【０１６８】
複数地点のグループ化を行うことで、巡回経路エンジン１００４は、グループ化された複数の地点を一つの巡回対象地点として巡回経路を生成する。これにより、例えば同一ビル内にある複数の自動販売機２へ同一の作業者が同一のタイミングで巡回できるような巡回経路を生成することが可能となる。
【０１６９】
複数地点のグループ化を行う場合は、複数地点の一次データを一つの地点の二次データとして出力されるようにルール１００１が作成される。複数地点のグループ化を行う場合のルール１００１の具体例を図１０及び図１１に示す。なお図１０の内容は図８に対応しており、図１１の内容は図９に対応している。そのため、重複する説明は適宜省略する。
【０１７０】
図１０は、一次データがＮｏ１〜Ｎｏ８に示す各条件にあてはまるか否かを判定するためのテーブルであり、図１１は、一次データが上記Ｎｏ１〜Ｎｏ８の何れかにあてはまった場合に、一次データから二次データへ変換する方法を定義したテーブルである。
【０１７１】
具体的に説明すると、まず図１０において、Ｎｏ１は、一次データ取得部１０１が受信したデータが、自動販売機２から送信されたデータであるか否かを判定するものである。
【０１７２】
一次データ取得部１０１が受信したデータが、自動販売機２から送信されたデータである場合には、Ｎｏ１の条件を満たすので、図８において「Ａ」〜「Ｉ」と記載されたルールが適用対象となる（図１０において「Ａ」〜「Ｉ」に対応する欄に”Ｙ”が記載されている）。
【０１７３】
ここで、図１０のＮｏ１の欄に記載されているように、データ変換部１０２は、ストレージ１００２を検索し、各自動販売機２から一次データ取得部１０１が受信したデータのうち、"building_id"が同一のデータを、group[]という配列の要素にする。これにより、データ変換部１０２は、"building_id"が同一のデータを同一の場所のデータであるとみなして二次データへの変換を行う。
【０１７４】
Ｎｏ１の条件を満たすときは、まず、図１０においてルール「Ａ」が適用されるので、データ変換部１０２は図１１の「Ａ」欄を参照し、一次データを二次データに変換する。
【０１７５】
図１１の「Ａ」欄のうち、Ｎｏ１０、Ｎｏ１１、Ｎｏ１６は図９と同じであるので、説明を省略する。
【０１７６】
Ｎｏ９では、"obj.building_id"という一次データが、"LOCATION.PLACE_ID"という二次データに変換される。
【０１７７】
Ｎｏ１３では、"LOCATION.REPLENISHMENT"という二次データが、"group.sum_all(g->(g.item_capacity-g.item1_remaining+g.item1_daily_consumption)+(g.item_capacity-g.item2_remaining+g.item2_daily_consumption)+(g.item_capacity-g.item3_remaining+g.item3_daily_consumption))"という算術式を用いて、一次データから変換される。
【０１７８】
ここで、a.sum_all()という関数は、配列a[]の全要素の合計を求めるラムダ式である。例えば、配列a[]の要素が、
a[0]={"num1":1,"num2":2}
a[1]={"num1":2,"num2":4}
a[2]={"num1":3,"num2":6}
の場合、a.sum_all(b->b.num2-b.num1)の結果は、(2-1)+(4-2)+(6-3)=6となる。
【０１７９】
つまり、a.sum_all(b->...)を実行すると、配列aの各要素a[0], a[1], a[2]が順に引数bに代入されて、ラムダ式b.num2-b.num1が評価される。そしてラムダ式の評価の結果は、a[0]のとき2-1=1、a[1]のとき4-2=2、a[2]のとき6-3=3となる。a.sum_all()では、これらすべての合計値が計算されるため、6が結果となる。
【０１８０】
これにより、その日の作業終了時点での同一ビル内の全自動販売機２の全商品の補充可能量の合計が、"LOCATION.REPLENISHMENT"に設定される。
【０１８１】
さらに図９のＮｏ１４に記載されているように、"group.sum_all(g -> g.estimate_work_minutes)"という算術式を用いて、同一ビル内の各自動販売機２の作業時間の合計が、"LOCATION.WORK_TIME"に設定される。
【０１８２】
図１０においてルール「Ｂ」「Ｃ」「Ｄ」が適用される場合は、図８と同じなので説明を省略する。
【０１８３】
次に、図１０においてルール「Ｅ」「Ｆ」「Ｇ」が適用される場合について説明する。
【０１８４】
この場合、データ変換部１０２は、一次データに含まれるデータが図１０のＮｏ５に示した条件式を満たす場合、ルール「Ｅ」が適用され、図１１の「Ｅ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"EXCLUDED"（巡回不要地点）にする。
【０１８５】
条件Ｎｏ５に記載されているa.and_all()という関数は、配列a[]の全要素のANDを求めるラムダ式である。例えば、配列a[]の要素が
a[0]={"flag1":true,"flag2":true}
a[1]={"flag1":true,"flag2":false}
a[2]={"flag1":false,"flag2":false}
の場合、a.and_all(b->b.flag1 OR b.flag2)の結果はfalseとなる。
【０１８６】
つまり、a.and_all(b->...)を実行すると、配列aの各要素a[0], a[1], a[2]が順に引数bに代入されて、ラムダ式b.flag1 OR b.flag2が実行される。そしてラムダ式の評価の結果は、a[0]のときtrue OR true=true、a[1]のときtrue OR false=true、a[2]のときfalse OR false=falseとなる。a.and_all()では、これらすべてのANDが計算されるため、falseが結果となる。
【０１８７】
これにより、データ変換部１０２は、同一ビル内の自動販売機２において、１日の終わりの時点（例えば午後５時）の商品ごとの残量の合計がそれぞれの在庫可能量の何割あるかを商品の補充の必要性を示す指標値としている。そしてデータ変換部１０２は、各商品の指標値が全ての自動販売機２で０．８を超えている場合に、このビルへの巡回が不要と判断される。
【０１８８】
一方、データ変換部１０２は、一次データに含まれるデータが、図１０のＮｏ６に示す条件式を満たす場合、ルール「Ｆ」が適用され、図１１の「Ｆ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"MANDATORY"（巡回必須地点）にする。
【０１８９】
条件Ｎｏ６に記載されているa.or_all()という関数は、配列a[]の全要素のORを求めるラムダ式である。例えば、配列a[]の要素が
a[0]={"flag1":true,"flag2":true}
a[1]={"flag1":true,"flag2":false}
a[2]={"flag1":false,"flag2":false}
の場合、a.or_all(b->b.flag1 AND b.flag2)の結果はtrueとなる。
【０１９０】
つまり、a.or_all(b->...)を実行すると、配列aの各要素a[0], a[1], a[2]が順に引数bに代入されて、ラムダ式b.flag1 AND b.flag2が実行される。そしてラムダ式の評価の結果は、a[0]のときtrue AND true=true、a[1]のときtrue AND false=false、a[2]のときfalse AND false=falseとなる。a.or_all()では、これらすべてのORが計算されるため、trueが結果となる。
【０１９１】
これにより、同一ビル内の自動販売機２の中で、今日中にいずれかの商品の最低在庫数が１０以下となるサービスレベルがＡの自動販売機２、あるいは、いずれかの商品で品切れを起こすサービスレベルがＢの自動販売機２が一つでもある場合には、このビルへの巡回が必須と判断される。
【０１９２】
また、一次データに含まれるデータが図１０のＮｏ５及びＮｏ６のいずれの条件式も満たさない場合、ルール「Ｇ」が適用され、データ変換部１０２は、図１１の「Ｇ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"AUTO"（自動設定）にする。これにより、このビルへの巡回が「自動設定」と判断される。
【０１９３】
次に、図１０においてルール「Ｈ」「Ｉ」が適用される場合について説明する。
【０１９４】
この場合、データ変換部１０２は、"group.or_all(g -> g.importance_level="A") "という算術式を用いて、同一ビル内の全ての自動販売機２のサービスレベルが"A"である場合は、Ｎｏ７の条件を満たすのでルール「Ｈ」を適用し、図１１の「Ｈ」欄を参照して"LOCATION.IMPORTANCE"という二次データの値を1.5×LOCATION.REPLENISHMENTとする。"LOCATION.REPLENISHMENT"は、図１１のＮｏ１３により生成される二次データの値である。
【０１９５】
一方、データ変換部１０２は、同一ビル内の全ての自動販売機２のサービスレベルが"A"でない場合は、Ｎｏ７の条件を満たさないのでルール「Ｉ」を適用し、図１１の「Ｉ」欄を参照して"LOCATION.IMPORTANCE"という二次データの値をLOCATION.REPLENISHMENTの値とする。
【０１９６】
以上のように、図１０及び図１１に示したルール１００１を用いることにより、データ変換部１０２は、複数地点の一次データにそれぞれ含まれる位置を示すデータが同一の場所を示している場合には、これら複数地点の一次データを、上記同一の場所を巡回対象の一つの地点とする二次データに変換することができる。そしてこれにより、同一ビル内にある複数の自動販売機２へ同一の作業者が同一のタイミングで巡回できるような巡回経路を生成することが可能となる。
【０１９７】
[第２実施形態]
次に第２実施形態に係る巡回経路生成装置１０について説明する。なお、第１実施形態と重複する説明は適宜省略する。
【０１９８】
第１実施形態では、巡回経路生成装置１０が、自動販売機２Ａから取得した第１仕様の一次データと、自動販売機２Ｂから取得した第２仕様の一次データを、それぞれ、二次データに変換して巡回経路を生成する場合について説明したが、第２実施形態に係る巡回経路生成装置１０は、自動販売機２に限らず、様々なデバイス２０から様々な仕様の一次データを取得し、それらを二次データに変換して、巡回経路を生成する。
【０１９９】
例えば図１３に示す様に、第２実施形態に係る巡回経路生成装置１０は、通信ネットワーク５（図１３には不図示）を介して、複数の自動販売機２Ａ、２Ｂの他に、複数のタンク２Ｃと通信可能に接続されている。自動販売機２Ａ、２Ｂ及びタンク２Ｃはいずれもデバイス２０の一例である。
【０２００】
タンク２Ｃは、各地のガソリンスタンドや工場などに設置される燃料貯蔵用の設備であり、各種石油製品（ガソリンや軽油、灯油などの燃料）を貯蔵するための設備である。そして燃料を積載したタンクローリー等の車両が順次タンク２Ｃを巡回することにより、各タンク２Ｃに燃料が補充される。
【０２０１】
タンク２Ｃは、不図示のデータ送信機を備えており、それぞれの位置を示すデータ及び巡回の必要性に関わるデータを含む一次データを通信ネットワーク５を介して定期的に（例えば毎日所定時刻に）、あるいは不定期に（例えば巡回経路生成装置１０から送信されるリクエストに応答する際に）巡回経路生成装置１０に送信する。タンク２Ｃから送信される一次データは、自動販売機２Ａ、２Ｂとは異なる第３仕様に準拠したデータである。
【０２０２】
タンク２Ｃから送信される一次データは、例えば図１４に示すように、「タンクのデバイスＩＤ」（device_id）、「タンクの設置場所」（latitude,longitude）、「タンク内の燃料の液面の位置」（sensor_distance）、「タンクの種別」（tank_type）、「タンクでの作業時間見込み」（estimate_work_minutes）の各データを含む。
【０２０３】
これらの内、巡回の必要性に関わるデータは、例えばタンク２Ｃ内の液面の位置を表すデータや、タンク２Ｃの種別を表すデータなどである。
【０２０４】
本実施形態に係るタンク２Ｃは、内部の燃料の液面の位置を計測する不図示のセンサを備えており、このセンサにより計測された液面の位置と、満タン時の液面の位置との差を、上記のsensor_distanceとして送信する。
【０２０５】
またタンク２Ｃには複数の種類があり、本実施形態では"TNK-A10"という種類と、" TNK-A20"という種類の２種類がある。
【０２０６】
"TNK-A10"というタンク２Ｃは、燃料貯蔵量が最大（満タン時）1000リットルであり、また満タン時の液面の高さが底面から100cmとなる直方体の形状をしている。そのため、液面高さを満タン時と比べて、1cmあたり10リットルに換算することができる。
【０２０７】
一方、"TNK-A20"というタンク２Ｃは、燃料貯蔵量が最大（満タン時）2000リットルであり、また満タン時の液面の高さが底面から100cmとなる直方体の形状をしている。そのため、液面高さを満タン時と比べて、1cmあたり20リットルに換算することができる。
【０２０８】
タンク２Ｃに燃料を運搬する車両の運転手は、拠点Ｃ（３Ｃ）を起点及び終点としてタンク２Ｃを巡回する。そして図１５に示す様に、車両（車両が具備するデータ送信機）、あるいは運転手が携帯する不図示の情報端末から、定期的（例えば１０分毎）に、あるいは不定期に（例えば車両が巡回経路生成装置１０からの送信リクエストを受信した際に）、「車両ＩＤ」（vehicle_id）、「車両の現在位置の緯度」（latitude）、「車両の現在位置の経度」（longitude）等のデータが巡回経路生成装置１０に送信される。
【０２０９】
図１３に戻って、巡回経路生成装置１０は、自動販売機２Ａに対する巡回経路を生成するＡ社用プラットフォーム１００Ａと、自動販売機２Ｂに対する巡回経路を生成するＢ社用プラットフォーム１００Ｂと、タンク２Ｃに対する巡回経路を生成するタンク巡回用プラットフォーム１００Ｃと、を有する。
【０２１０】
タンク巡回用プラットフォーム１００Ｃは、Ａ社用プラットフォーム１００ＡやＢ社用プラットフォーム１００Ｂと同様に、クラウドや巡回経路生成装置１０上の仮想マシンとして構成されても良いし、専用に用意されたハードウェアを用いて構成されても良い。
【０２１１】
またタンク巡回用プラットフォーム１００Ｃの構成は、Ａ社用プラットフォーム１００ＡやＢ社用プラットフォーム１００Ｂと同様であり、ルールＣ（１００１Ｃ）と、ストレージ１００２Ｃと、ルールエンジン１００３Ｃと、巡回経路エンジン１００４Ｃとを有している。
【０２１２】
そしてルールＣ（１００１Ｃ）を、タンク２Ｃや車両から送信される一次データの仕様に合わせて設定しておけば、例えば、ストレージ１００２Ｃ、ルールエンジン１００３Ｃ、及び巡回経路エンジン１００４Ｃを、共通プラットフォーム１００５Ｃとして構築することが可能となる。そしてこの場合、タンク２Ｃや車両から送信される一次データの仕様変更があっても、ルールＣ（１００１Ｃ）を更新するのみで共通プラットフォーム１００５Ｃには手を加えることなく、迅速に仕様変更に対応することが可能となる。
【０２１３】
また、巡回経路生成装置１０は、共通プラットフォーム１００５Ａ、１００５Ｂ、１００５Ｃを共通プラットフォーム１００５として共用し、ルールＡ（１００１Ａ）、ルールＢ（１００１Ｂ）、及びルールＣ（１００１Ｃ）のみを個別に用意しておくように構成しても良い。
【０２１４】
つぎに、本実施形態に係るルールＣ（１００１Ｃ）の一部を、具体例として図１６及び図１７に示す。
【０２１５】
図１６は、一次データがＮｏ１〜Ｎｏ６に示す各条件にあてはまるか否かを判定するためのテーブルであり、図１７は、一次データが上記Ｎｏ１〜Ｎｏ６の何れかにあてはまった場合に、一次データから二次データへ変換する方法を定義したテーブルである。
【０２１６】
具体的に説明すると、まず図１６において、Ｎｏ１は、一次データ取得部１０１が受信したデータが、タンク２Ｃから送信されたデータであるか否かを判定するものである。
【０２１７】
一次データ取得部１０１がタンク２Ｃから受信するデータは、タンク２Ｃの燃料補充を行う業者（以下、Ｃ社とも記す）により任意に定められたデータ形式（第３仕様）であり、条件Ｎｏ１に記載されている"obj"は、アップロードされたデータ１件を表す。obj.tank_typeなどは燃料補充業者（Ｃ社）が決めた形式である。
【０２１８】
一次データ取得部１０１が受信したデータが、タンク２Ｃから送信されたデータである場合には、Ｎｏ１の条件を満たすので、図１６において「Ａ」〜「Ｆ」と記載されたルールが適用対象となる（図１６において「Ａ」〜「Ｆ」に対応する欄に”Ｙ”が記載されている）。
【０２１９】
Ｎｏ１の条件を満たすときは、まず、図１６においてルール「Ａ」が適用されるので、データ変換部１０２は図１７の「Ａ」欄を参照し、一次データを二次データに変換する。
【０２２０】
具体的には、図１７のＮｏ７に記載されているように、"obj.device_id"という一次データが、"LOCATION.PLACE_ID"という二次データに変換される。"LOCATION"は、巡回対象地点に関する情報であることを表す。
【０２２１】
また図１７のＮｏ８に記載されているように、"obj.place.latitude"という一次データが、"LOCATION.LATITUDE"という二次データに変換される。同様に、図１７のＮｏ９に記載されているように、"obj.place.longitude"という一次データが、"LOCATION.LONGITUDE"という二次データに変換される。
【０２２２】
図１７のＮｏ１０には、"LOCATION.DURATION"という二次データに、{0000,2400}が設定されることが記載されている。
【０２２３】
さらに図１７のＮｏ１２に記載されているように、"obj.estimate_work_minutes"という一次データが、"LOCATION.WORK_TIME"という二次データに変換される。
【０２２４】
また図１７のＮｏ１４に記載されているように、"LOCATION.VEHICLE_LIMIT"という二次データにLARGEが設定される。
【０２２５】
次に、図１６においてルール「Ｂ」「Ｃ」が適用される場合について説明する。この場合、データ変換部１０２は、"obj.tank_type"という一次データの値が"TNK-A10"である場合は、Ｎｏ２の条件を満たすので、ルール「Ｂ」が適用され、図１７の「Ｂ」欄を参照して"LOCATION.REPLENISHMENTという二次データの値をobj.sensor_distance×1000/100に設定する。また" TNK-A20"である場合は、Ｎｏ３の条件を満たすので、ルール「Ｃ」が適用され、図１７の「Ｃ」欄を参照してobj.sensor_distance×2000/100に設定する。
【０２２６】
次に、図１６においてルール「Ｄ」「Ｅ」「Ｆ」が適用される場合について説明する。
【０２２７】
この場合、データ変換部１０２は、一次データに含まれるデータが図１６のＮｏ４に示した条件式を満たす場合、ルール「Ｄ」が適用され、図１７の「Ｄ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"EXCLUDED"（巡回不要地点）にする。
【０２２８】
条件Ｎｏ４は、タンク２Ｃ内の液面の位置と、満タン時の液面の位置との差を、商品の補充の必要性を示す指標値としている。そしてデータ変換部１０２は、この指標値が２０ｃｍ未満の場合に巡回不要と判断している。
【０２２９】
一方、データ変換部１０２は、一次データに含まれるデータが、図１６のＮｏ５に示す条件式を満たす場合、ルール「Ｅ」が適用され、図１７の「Ｅ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"MANDATORY"（巡回必須地点）にする。
【０２３０】
図１６のＮｏ５は、タンク２Ｃ内の液面の位置と、満タン時の液面の位置との差を、商品の補充の必要性を示す指標値としている。そしてデータ変換部１０２は、この指標値が８０ｃｍ以上の場合に巡回必須と判断している。
【０２３１】
また、一次データに含まれるデータが図１６のＮｏ４及びＮｏ５のいずれの条件式も満たさない場合、ルール「Ｆ」が適用され、データ変換部１０２は、図１７の「Ｆ」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"AUTO"（自動設定）にする。
【０２３２】
そして巡回経路生成装置１０は、第１実施形態と同様に、「自動設定」になっている地点を、「巡回任意地点」と「巡回必須地点」と「巡回不要地点」に振り分ける。
【０２３３】
次に、図１６においてルール「Ｇ」が適用される場合について説明する。
【０２３４】
ルール「Ｇ」は、一次データ取得部１０１が受信したデータがＮｏ６の条件を満たした場合、つまり、一次データ取得部１０１が受信したデータが車両から送信されたデータである場合に適用されるルールである。
【０２３５】
この場合、例えば図１７のＮｏ１６に記載されているように、"vehicle.vehicle_id"という一次データが、"VEHICLE.VEHICLE_ID"という二次データに変換される。"VEHICLE"は、車両に関する情報であることを表す。
【０２３６】
また図１７のＮｏ１７に記載されているように、"vehicle.latitude"という一次データが、"VEHICLE.LATITUDE"という二次データに変換される。同様に、図１７のＮｏ１８に記載されているように、"vehicle.longitude"という一次データが、"VEHICLE.LONGITUDE"という二次データに変換される。
【０２３７】
また図１７のＮｏ１９に記載されているように、"VEHICLE.SIZE"という二次データにLARGEが設定される。
【０２３８】
以上のようにして、データ変換部１０２は、ルールＣ（１００１Ｃ）を用いて一次データを二次データに変換する。
【０２３９】
このような態様により、巡回経路生成装置１０は、巡回対象の各地点から様々な仕様の一次データを取得し、それらを所定仕様に標準化された二次データに変換して巡回経路を生成することが可能となる。そしてこれにより、ソフトウェア開発業者は、様々な業種の企業から巡回経路を生成するシステムの開発依頼を受けた場合であっても、各企業別にソフトウェアのカスタム開発を行わなくても対応可能な汎用性の高い巡回経路生成装置１０を実現することが可能になる。
【０２４０】
以上、第１実施形態及び第２実施形態に係る巡回経路生成装置１０、巡回経路生成装置１０の制御方法及びプログラムについて説明したが、これらの実施形態に係る巡回経路生成装置１０、巡回経路生成装置１０の制御方法及びプログラムによれば、巡回対象の各地点の一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。そしてこれにより、汎用性の高い巡回経路生成装置１０を実現でき、ソフトウェアのカスタム開発を行わなくても様々な仕様に対応することが可能になる。
【０２４１】
また巡回経路生成装置１０は、ルールエンジン１００３を備えることで、任意の形式のユーザーデータを、巡回経路の作成条件に変換して使用できる。これによって、巡回経路生成装置１０を含むソリューションを低コストで構築できる。
【０２４２】
また巡回経路を生成する際には、巡回対象の地点や、地点間の移動時間、巡回の優先度、車両の現在位置など、様々な巡回条件を指定する必要があるが、ＩｏＴプラットフォームを使ってシステムを構築すると、ユーザの視点から設計された形式のデータがストレージ１００２に格納されることになる。巡回経路生成装置１０は、これらをルールエンジン１００３によって変換（または割り当て）することにより、柔軟かつ安価に巡回経路を生成できるようになる。
【０２４３】
巡回経路生成装置１０は、巡回経路の生成条件を作成するためにルールエンジン１００３を使用することで、巡回経路生成装置１０のユーザが定義した一般的なデータを巡回経路用の条件に変換して利用する。これにより、ユーザごとにカスタムプログラムで実装する必要がなく、ルール１００１の設定だけで各ユーザの要望を実現できる。
【０２４４】
巡回経路生成装置１０は、ストレージ１００２に格納されているユーザごとに設計されたデータを、ルールエンジン１００３により巡回経路作成条件に変換する。ユーザの視点の任意形式のデータを、ルール１００１（つまり設定）によって巡回経路の生成条件に変換できるため、ユーザごとのカスタム範囲はルール１００１の差し替えで済むため最小限となり、巡回経路生成装置１０の構築コストが軽減できる。
【０２４５】
巡回経路生成装置１０は、ルールエンジン１００３を使うことにより、ＩｏＴプラットフォームに格納されているユーザ視点での情報を巡回経路探索に必要な情報に変換して、巡回経路生成の入力条件とする。
【０２４６】
尚、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得るとともに、本発明にはその等価物も含まれる。
【０２４７】
例えば第２実施形態において、自動販売機２Ａを巡回する巡回経路と、自動販売機２Ｂを巡回する巡回経路と、タンク２Ｃを巡回する巡回経路と、を同時に生成できるような巡回経路生成装置１０を説明したが、どのようなデバイス２０からのデータを用いる場合であっても巡回経路生成装置１０の内部構成は同一であり、各デバイス２０の仕様に応じたルール１００１を用意することにより同様に適用することが可能である。
【０２４８】
このため、例えば、農地の複数個所に設けられている農業用給水タンクに水を補給する業務や、営業担当者による顧客訪問業務、各地の水田の水位計測業務等、様々な場面に適用することができる。
【符号の説明】
【０２４９】
１  巡回経路生成システム
２Ａ、２Ｂ  自動販売機
２Ｃ  タンク
３  拠点
５  通信ネットワーク
１０  巡回経路生成装置
１００  プラットフォーム
１００Ａ  Ａ社用プラットフォーム
１００１Ａ  ルールＡ
１００２Ａ  ストレージ
１００３Ａ  ルールエンジン
１００４Ａ  巡回経路エンジン
１００５Ａ  共通プラットフォーム
１００Ｂ  Ｂ社用プラットフォーム
１００１Ｂ  ルールＢ
１００２Ｂ  ストレージ
１００３Ｂ  ルールエンジン
１００４Ｂ  巡回経路エンジン
１００５Ｂ  共通プラットフォーム
１００Ｃ  タンク巡回用プラットフォーム
１００１Ｃ  ルールＣ
１００２Ｃ  ストレージ
１００３Ｃ  ルールエンジン
１００４Ｃ  巡回経路エンジン
１００５Ｃ  共通プラットフォーム
１０１  一次データ取得部
１０２  データ変換部
１０２１  地図
１０２２  移動情報取得部
１０２３  ストレージ
１０２４  ストレージ
１０２５  ストレージ
１０３  変換ルール記憶部
１０４  変換ルール入力部
１０５  変換ルール更新部
１０６  巡回経路生成部
１１  プロセッサ
１２  主記憶装置
１３  補助記憶装置
１４  入力装置
１５  出力装置
１６  通信装置
２０  デバイス
【図１】
2020086894.tif 000003
【図２】
2020086894.tif 000004
【図３】
2020086894.tif 000005
【図４】
2020086894.tif 000006
【図５】
2020086894.tif 000007
【図６】
2020086894.tif 000008
【図７】
2020086894.tif 000009
【図８】
2020086894.tif 000010
【図９】
2020086894.tif 000011
【図１０】
2020086894.tif 000012
【図１１】
2020086894.tif 000013
【図１２】
2020086894.tif 000014
【図１３】
2020086894.tif 000015
【図１４】
2020086894.tif 000016
【図１５】
2020086894.tif 000017
【図１６】
2020086894.tif 000018
【図１７】
2020086894.tif 000019