特許法第30条第2項適用 開示日 :平成30年11月14日~16日 展示会名 :Embedded Technology 2018/組込み総合技術展 IoT Technology 2018/IoT総合技術展 展示会開催日:平成30年11月14日~16日 開示場所 :パシフィコ横浜 URL :http://www.jasa.or.jp/expo/
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。以下、本発明を実施形態に即して添付図面を参照しつつ説明する。
[第1実施形態]
==全体構成==
図1に、本発明の第1実施形態に係る巡回経路生成システム1を示す。巡回経路生成システム1は、巡回経路生成装置10と、複数の自動販売機2A、2Bと、が通信ネットワーク5(図1には不図示)を介して通信可能に接続されて構成されている。通信ネットワーク5はインターネットやLAN(Local Area Network)、電話網等の各種の情報通信網である。
自動販売機2A、2Bは、利用者から所定金額の金銭が投入されると、飲料や食品などの各種商品を利用者に提供する設備ないし装置(以下、デバイス20とも記載する)である。
本実施形態では、自動販売機2Aは、自動販売機2Aのメンテナンス業者であるA社(例えば、自動販売機2Aの製造メーカの関連会社)の作業員によってメンテナンスが行われる。自動販売機2Bは、自動販売機2Bのメンテナンス業者であるB社(例えば、自動販売機2Bの製造メーカの関連会社)の作業員によってメンテナンスが行われる。
自動販売機2A、2Bは、それぞれの位置を示すデータ及び巡回の必要性に関わるデータを含む一次データを通信ネットワーク5を介して定期的に(例えば毎日所定時刻に)、あるいは不定期に(例えば巡回経路生成装置10から送信されるリクエストに応答する際に)巡回経路生成装置10に送信する。
自動販売機2A、2Bから送信される一次データは、各自動販売機2A、2Bごとに定められている。自動販売機2Aから送信される一次データは、所定の第1仕様に準拠している。第1仕様は例えば自動販売機2Aの製造メーカあるいはA社によって定められた仕様である。また自動販売機2Bから送信される一次データは、所定の第2仕様に準拠している。第2仕様は例えば自動販売機2Bの製造メーカあるいはB社によって定められた仕様である。そのため、自動販売機2Aから送信される一次データと自動販売機2Bから送信される一次データは、データの内容やフォーマットなどが互いに異なっている。
巡回の必要性に関わるデータとしては、例えば商品の残量あるいは補充可能量、紙幣や硬貨の残量、故障発生時のエラーコードや機器の状態を示すコードや数値データ、前回のメンテナンスからの経過時間などであり、第1仕様及び第2仕様においてそれぞれ定められている。
A社の作業員は、職場や営業所などの拠点A(3A)を起点及び終点として自動販売機2Aを巡回する。同様に、B社の作業員は、拠点B(3B)を起点及び終点として自動販売機2Bを巡回する。
巡回経路生成装置10は、作業員が巡回対象の各地点を巡回する際の巡回経路を生成する情報処理装置である。図1に示す例では、巡回経路生成装置10は、自動販売機2Aから送信されてきた第1仕様の一次データを元に、A社の作業員が自動販売機2Aを巡回する際の巡回経路を生成するA社用プラットフォーム100Aと、自動販売機2Bから送信されてきた第2仕様の一次データを元に、B社の作業員が自動販売機2Bを巡回する際の巡回経路を生成するB社用プラットフォーム100Bと、を有する。
A社用プラットフォーム100A及びB社用プラットフォーム100Bは、クラウドや巡回経路生成装置10上の仮想マシンとして構成されても良いし、それぞれに専用に用意されたハードウェアを用いて構成されても良い。
A社用プラットフォーム100Aは、ルールA(1001A)と、ストレージ1002Aと、ルールエンジン1003Aと、巡回経路エンジン1004Aとを有しており、B社用プラットフォーム100Bは、ルールB(1001B)と、ストレージ1002Bと、ルールエンジン1003Bと、巡回経路エンジン1004Bとを有している。
ストレージ1002Aは、各自動販売機2AからA社用プラットフォーム100Aに送信されてきた第1仕様の一次データを記憶する。
ルールA(1001A)には、自動販売機2Aから取得した一次データを二次データに変換するための変換ルールが記憶されている。二次データは、巡回経路エンジン1004Aが巡回経路を生成するために定められた所定仕様のデータである。
ルールエンジン1003Aは、ルールA(1001A)を参照して、自動販売機2Aから取得した一次データを二次データに変換する。
巡回経路エンジン1004Aは、ルールエンジン1003Aによって変換された二次データを用いて、山登り法などのような、公知の経路探索アルゴリズムを実行することにより、A社の作業員が自動販売機2Aを巡回する際の巡回経路を生成する。
このような態様によって、巡回経路エンジン1004Aは、自動販売機2Aから送られてくる一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。
これにより、ルールA(1001A)を一次データの仕様に合わせて設定しておけば、例えば、ストレージ1002A、ルールエンジン1003A、及び巡回経路エンジン1004Aを、共通プラットフォーム1005Aとして構築するようなことも可能となる。そしてこの場合、一次データの仕様変更があっても、ルールA(1001A)を更新するのみで共通プラットフォーム1005Aには手を加えることなく、迅速に仕様変更に対応することが可能となる。
A社用プラットフォーム100Aと同様に、B社用プラットフォーム100Bにおいて、ストレージ1002Bは、各自動販売機2BからB社用プラットフォーム100Bに送信されてきた一次データを記憶する。
ルールB(1001B)には、自動販売機2Bから取得した一次データを二次データに変換するための変換ルールが記憶されている。二次データは、巡回経路エンジン1004Bが巡回経路を生成するために定められた所定仕様のデータである。この所定仕様は、ルールエンジン1003Aが出力する二次データと同じ仕様あるいは互換性がある仕様である。
ルールエンジン1003Bは、ルールB(1001B)を参照して、自動販売機2Bから取得した一次データを二次データに変換する。
巡回経路エンジン1004Bは、ルールエンジン1003Bによって生成された二次データを用いて、山登り法などのような、公知の経路探索アルゴリズムを実行することにより、B社の作業員が自動販売機2Bを巡回する際の巡回経路を生成する。
このような態様によって、巡回経路エンジン1004Bは、自動販売機2Bから送られてくる一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。
これにより、ルールB(1001B)を一次データの仕様に合わせて設定しておけば、例えば、ストレージ1002B、ルールエンジン1003B、及び巡回経路エンジン1004Bを、共通プラットフォーム1005Bとして構築するようなことも可能となる。そしてこの場合、一次データの仕様変更があっても、ルールB(1001B)を更新するのみで共通プラットフォーム1005Bには手を加えることなく、迅速に仕様変更に対応することが可能となる。
以上のように、A社に提供する共通プラットフォーム1005Aも、B社に提供する共通プラットフォーム1005Bも、同じソフトウェアを用いて構築することができるので、ソフトウェアの開発工数を大幅に削減でき、開発期間及び開発コストの削減が可能となる。
上記実施形態では、A社及びB社が個別に共通プラットフォーム1005A,1005Bを用いる構成としたが、これに限らず、A社及びB社が共通プラットフォーム1005を共用し、ルールA(1001A)とルールB(1001B)のみを個別に用意しておくようにしても良い。
この場合、巡回経路生成装置10は、自動販売機2A、2Bから受信した一次データの仕様を判別したうえで、第1仕様であればルールA(1001A)を参照し、第2仕様であればルールB(1001B)を参照し、それぞれ、所定仕様の二次データに変換する。
巡回経路生成装置10は、種々の公知の方法を用いて一次データの仕様判別を行うことができる。例えば一次データ内の特定ビット位置のビットパターンから仕様を判別できる。あるいは、自動販売機2A,2Bから送信される一次データ内に、巡回経路生成装置10が仕様を特定できるようにするための情報を明示的に含めるようにしても良い。
なお以下の説明では、自動販売機2A、2Bを区別する必要がない場合は、自動販売機2あるいはデバイス20と記載する。またA社、B社をまとめてメンテナンス業者あるいはユーザとも記す。また拠点A(3A)と拠点B(3B)をまとめて拠点3とも記す。
また同様に、ルールA(1001A)とルールB(1001B)、ストレージ1002Aとストレージ1002B、ルールエンジン1003Aとルールエンジン1003B、巡回経路エンジン1004Aと巡回経路エンジン1004B、共通プラットフォーム1005Aと共通プラットフォーム1005B、A社用プラットフォーム100AとB社用プラットフォーム100Bについても、区別する必要がない場合には、それぞれ、ルール1001、ストレージ1002、ルールエンジン1003、巡回経路エンジン1004、共通プラットフォーム1005、プラットフォーム100と記載する。
また本実施形態では、各地に設置される自動販売機2等のデバイス20を作業員が巡回して商品等の物資を補給する際の巡回経路を巡回経路生成装置10が生成する場合を例に説明するが、各地に設けられる農業用給水タンクの監視業務など、他の様々な業務に適用できる。
なお図1には、巡回経路生成装置10が第1仕様及び第2仕様の2種類の仕様の一次データを取得して二次データに変換する場合を示したが、3種類以上の仕様の一次データを取得して二次データに変換する場合も同様である。また、巡回経路生成装置10が1種類の仕様の一次データを取得して二次データに変換する場合も同様である。
以下、本実施形態では、説明の簡単化のために、巡回経路生成装置10が1種類の仕様の一次データを取得して二次データに変換する場合を例に説明する。
==自動販売機==
図2は自動販売機2の主な構成を示すブロック図である。図2に示すように、自動販売機2は、プロセッサ21、記憶装置22、通信装置(データ送信機)23、販売制御機構24、金銭受付機構25、及び商品残量検出機構26を備える。
プロセッサ21は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)を用いて構成される。記憶装置22は、プログラムやデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、不揮発性半導体メモリ(NVRAM(Non Volatile RAM))等である。
プロセッサ21及び記憶装置22は、自動販売機2の統括的な制御を行う主制御部を構成する。プロセッサ21及び記憶装置22は、例えば、通信装置23を介して提供される仮想的な情報処理資源(例えば、クラウドシステム(Cloud System)により提供されるクラウドサーバ(Cloud Server)等)を用いて実現されるものであってもよい。
記憶装置22には様々な種類のデータが記憶されている。例えば記憶装置22には、自動販売機2の識別情報や位置情報(例えば緯度及び経度)、商品レーンごとの在庫可能最大量、商品レーンごとの商品の残量、商品レーンごとの商品の補充可能量、商品レーンごとの商品の一日の販売予測数、メンテナンスの履歴情報、自動販売機2が設置されているビル名や識別情報、ビルの営業時間、来訪時の駐車場の位置情報、この駐車場に駐車可能な車両サイズ、自動販売機2の重要度、メンテナンス作業時の予想作業時間、等の様々な情報が記憶されている。
これらの情報は、データの種類に応じて、事前に作業員によって設定されるか、あるいは自動販売機2が備える各種センサにより検出されて、記憶装置22に記憶される。
通信装置23は、例えば、無線通信モジュール、NIC(Network Interface Card)等を用いて構成される。通信装置23は、通信ネットワーク5を介した巡回経路生成装置10等の他の装置との間の通信を実現する。通信装置23は、他の装置から情報を受け付ける入力装置として機能させることもできる。
なお、通信装置23は、自動販売機2の1つの構成要素として設けられても良いし、自動販売機2とは別の構成要素として設けられても良い。後者の場合、通信装置23は、自動販売機2と同位置に設けられてもよいし、自動販売機2から離れた位置に設けられてもよい。
通信装置23は、記憶装置22に記憶されている情報を元に、図6に例示する複数種類のデータからなる一次データを、巡回経路生成装置10に定期的あるいは不定期に送信する。例えば、通信装置23は、毎日、所定時刻に上記一次データを巡回経路生成装置10に送信する。あるいは通信装置23は、巡回経路生成装置10から一次データの送信リクエストを受信した際に一次データを送信する。
ただし、通信装置23は、図6に示す全てのデータを毎回送信しなくても良い。例えば、通信装置23は、一次データを構成する複数種類のデータを、種類に応じて異なるタイミングで送信するようにしても良い。
例えば通信装置23は、自動販売機2の位置情報やビルの識別情報、ビルの営業時間、駐車場の位置情報などのように、内容が日々変化しないデータ(固定データとも記す)については、例えば毎月1回と巡回経路生成装置10からリクエストを受信した場合にだけ送信し、商品の補充可能量のように日々変化するデータ(変動データとも記す)については、毎日所定時刻に送信し、巡回経路生成装置10からリクエストを受信した場合にも送信する。
なおこの場合、巡回経路生成装置10は、自動販売機2からいずれかの種類のデータを受信した際に、当該データと、自動販売機2から過去に(例えば直近に)受信した他の種類のデータと、を組み合わせて一次データを再現するようにする。
このような態様により、自動販売機2から巡回経路生成装置10へのデータ送信量を削減することが可能となる。
あるいは、固定データをあらかじめプラットフォーム100のストレージ1002に記憶しておき、通信装置23は固定データを送信しないようにしても良い。この場合、巡回経路生成装置10は、変動データを通信装置23から受信した場合に、当該変動データと、ストレージ1002に予め記憶されている固定データとを組み合わせて一次データを再現するようにする。
このような態様によっても、自動販売機2から巡回経路生成装置10へのデータ送信量を削減することが可能となる。
販売制御機構24は、機械式機構や電子回路等を用いて構成され、自動販売機2の利用者に商品を提供する際に制御される機構を含む。販売制御機構24は、例えば、自動販売機2の内部の商品棚や商品排出機構、自動販売機2の外部の商品選択ボタンや代金支払い用ICカードのリーダライタ、各種表示ランプ、ディスプレイ等を含む。
金銭受付機構25は、硬貨選別機(コインメック)や紙幣選別機(ビルバリ)としての機構を含み、例えば、利用者が投入する硬貨や紙幣の受け入れ、選別、貯留、自動販売機2内に釣銭用に保有する硬貨や紙幣の枚数の制御等を行う。
商品残量検出機構26は、自動販売機2の商品残量を検出する。商品残量検出機構26は、例えば、機械式または電子式の残量計数機構、光学式センサ、感圧センサ等を用いて構成される。商品残量検出機構26は、自動販売機2が販売する商品の性質に応じた種々の構成を取り得る。
なお自動販売機2は、プロセッサ21が記憶装置22に格納されているプログラムを読み出して実行することにより自動販売機2が有する様々な機能を実現する。
例えば自動販売機2は、記憶装置22に記憶されている各レーンの在庫可能最大量と各レーンの商品残量とに基づき、各レーンの商品補充可能量を求める。本実施形態では、自動販売機2は、在庫可能最大量と商品残量の差を商品補充可能量として求める。
また自動販売機2は、各レーンの商品の一日の販売予測数を求める。自動販売機2は、過去所定期間(例えば過去1週間)の各商品の毎日の補充可能量を統計処理する(例えば平均値を求める)ことにより、各商品の一日の販売予測数を求める。
上記のプログラムは、例えば、可搬型記録媒体(CD(Compact Disc)、DVD(Digital Versatile Disc)、フラッシュメモリ等)から図示しない可搬型記録媒体の読取装置を介して記憶装置22にロードされる。また上記のプログラムは、例えば、上記プログラムを蓄積管理する図示しない配信装置から通信ネットワーク5を介して自動販売機2にダウンロードされる。
==巡回経路生成装置==
図3は巡回経路生成装置10の主な構成を示すブロック図である。図3に示すように、巡回経路生成装置10は、プロセッサ11、主記憶装置12、補助記憶装置13、入力装置14、出力装置15、及び通信装置16を備える。これらは図示しないバス等のデータ転送路を介して互いに接続されている。
巡回経路生成装置10は、例えば、仮想サーバやクラウドシステムにおけるクラウドサーバのように仮想的なリソースを用いて実現されるものでもよい。また巡回経路生成装置10は、例えば、通信可能に接続された複数の情報処理装置やプロセッサによって実現してもよい。
プロセッサ11は、例えば、CPU、MPU、GPU(Graphics Processing Unit)等を用いて構成されている。プロセッサ11が、主記憶装置12に格納されている本実施形態に係るプログラムを読み出して実行することにより、巡回経路生成装置10の様々な機能が実現される。主記憶装置12は、プログラムやデータを記憶する装置であり、例えば、ROM、RAM、不揮発性半導体メモリ等である。
補助記憶装置13は、例えば、ハードディスクドライブ、半導体メモリ(SSD、SDメモリカード、USBメモリ等)、光学式記憶装置(CD、DVD等)の読取/書込装置等)、クラウドサーバの記憶領域等である。補助記憶装置13に格納されているプログラムやデータは主記憶装置12に随時ロードされる。補助記憶装置13は、例えば、NAS(Network Attached Storage)のように通信手段を介してプロセッサ11と通信可能に接続するものであってもよい。
入力装置14は、外部からデータやコマンドの入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、タッチパネル、可搬型記録媒体の読取装置等である。出力装置15は、処理経過や処理結果等の各種情報を外部に提供するユーザインタフェースであり、例えば、画面表示装置(LCD(Liquid Crystal Display)、GPU等)、印字装置、可搬型記録媒体の書込装置等である。
通信装置16は、通信ネットワーク5を介して行われる他の装置との間の通信を実現する有線方式または無線方式の通信インタフェースであり、例えば、無線通信モジュールやNIC等である。尚、例えば、通信装置16を介して他の装置との間で情報の入力や出力を行う構成、即ち通信装置16が入力装置14や出力装置15として機能する構成としてもよい。
図4に巡回経路生成装置10が備える主な機能を示す。図4に示すように、巡回経路生成装置10は、一次データ取得部101、データ変換部102、変換ルール記憶部103、変換ルール入力部104、変換ルール更新部105、巡回経路生成部106の各機能を備える。
巡回経路生成装置10の各機能は、例えば、プロセッサ11が主記憶装置12に格納されているプログラムを読み出して実行することにより実現される。上記のプログラムは、例えば、可搬型記録媒体から入力装置14を介して主記憶装置12にロードされる。また上記のプログラムは、例えば、上記プログラムを蓄積管理する図示しない配信装置から通信ネットワーク5を介して巡回経路生成装置10にダウンロードされる。
<一次データ取得部>
一次データ取得部101は、巡回対象の各地点の自動販売機2から、それぞれの位置を示すデータ及び巡回の必要性に関わるデータを含む各地点毎に定められた仕様(例えば第1仕様や第2仕様)の一次データを取得する。
位置を示すデータは、図6に例示する一次データの場合、「自動販売機2が設置されているビルのID」(building_id)や、「自動販売機2の緯度経度」(installation_location)、「訪問時に使用する駐車場の緯度経度」(parking_lot)が含まれる。
巡回の必要性に関わるデータは、図6に例示する一次データの場合、「商品1の補充可能量」(item1_free)、「商品2の補充可能量」(item2_free)、「商品3の補充可能量」(item3_free)、「商品1が一日で売れる量の予測値」(item1_daily_consumption)、「商品2が一日で売れる量の予測値」(item2_daily_consumption)、「商品3が一日で売れる量の予測値」(item3_daily_consumption)、「自動販売機2の重要度」(importance_level)、「最大在庫量」(item_capacity)が含まれる。
なお図6には示されていないが、後述するように、「商品1の残量」(item1_remaining)、「商品2の残量」(item2_remaining)、「商品3の残量」(item3_remaining)も巡回の必要性に関わるデータに含まれる。
また上述したように、各自動販売機2は全てのデータを毎回送信しなくても良く、一次データを構成する複数種類のデータを、種類に応じて異なるタイミングで送信するようにしても良い。
この場合、一次データ取得部101は、自動販売機2からいずれかの種類のデータを受信した際に、当該データと、この自動販売機2から過去に受信した他の種類のデータと、を組み合わせて一次データを再現する。
例えば、各地の自動販売機2が、図6に示す一次データの内、自動販売機2の緯度経度、自動販売機2が設置されているビルのID、ビルの営業時間、駐車場の緯度経度については、1か月に1回の頻度で巡回経路生成装置10に送信し、他のデータについては毎日所定時刻に巡回経路生成装置10に送信するように設定されている場合には、巡回経路生成装置10は、自動販売機2から毎日所定時刻に他のデータを受信する毎に、1か月に1回しか送られてこない上記の各データが送信されてこなかった場合には、これらのデータについては、過去(例えば直近)に受信したデータで補うことによって一次データを再現する。
このような態様により、自動販売機2から巡回経路生成装置10へのデータ送信量を削減することが可能となる。
また上述したように、自動販売機2の位置を示すデータや商品の在庫可能最大量等の固定データをプラットフォーム100のストレージ1002に記憶しておくようにし、自動販売機2からは、商品の補充可能量のような変動データのみが送信されるようにすることもできる。この場合一次データ取得部101は、変動データを自動販売機2から受信した際に、当該変動データと、ストレージ1002に予め記憶されている固定データとを組み合わせることで一次データを取得する。
また一次データ取得部101は、図7に示す車両情報も受信する。車両情報は、作業員が各地の自動販売機2を巡回する際に利用する不図示の車両(車両が具備する通信装置)、あるいは作業員が携帯する不図示の情報端末から、定期的(例えば10分毎)に、あるいは不定期に(例えば車両が巡回経路生成装置10からの送信リクエストを受信した際に)送信される情報であり、本実施形態では、「車両ID」(vehicle_id)、「車両の現在位置の緯度」(latitude)、「車両の現在位置の経度」(longitude)、「車両のサイズ」(vehicle_size)が含まれる。
巡回経路生成装置10は、これらの車両や携帯端末から送信されてくる車両情報も用いて、巡回経路を生成しても良い。例えば巡回経路生成装置10は、各自動販売機2から受信した「車両のサイズの制限」(vehicle_limit)と、車両から受信した車両情報の「車両のサイズ」(vehicle_size)とを比較し、ルートマンが巡回に用いる車両を駐車する駐車場が確保できない巡回地点を経路に含まないように、巡回経路を生成する。
このような態様により、巡回に使用する車両のサイズを考慮した巡回経路を生成することが可能となる。
<データ変換部>
データ変換部102は、各地点の一次データを、巡回経路を生成するために定められた所定仕様の二次データに変換する。
このような態様により、巡回経路生成部106は、各地点の一次データの仕様がどのような仕様であっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。
なお本実施形態では、データ変換部102はルールエンジン1003として具現化されている。
<変換ルール記憶部>
変換ルール記憶部103は、一次データを所定仕様の二次データに変換するための変換ルールを記憶する。そしてデータ変換部102は、この変換ルールを用いて一次データを二次データに変換する。本実施形態では、変換ルール記憶部103はルール1001として具現化されている。
本実施形態に係るルール1001の一部を、具体例として図8及び図9に示す。
図8は、一次データがNo1~No8に示す各条件にあてはまるか否かを判定するためのテーブルであり、図9は、一次データが上記No1~No8の何れかにあてはまった場合に、一次データから二次データへ変換する方法を定義したテーブルである。
なお、図8及び図9に示すルール1001は、自動販売機2から変動データのみならず固定データも送信される場合の例である。
具体的に説明すると、まず図8において、No1は、一次データ取得部101が受信したデータが、自動販売機2から送信されたデータであるか否かを判定するものである。
一次データ取得部101が受信したデータは、メンテナンス業者ごとに任意に定められたデータ形式であり、条件No1に記載されている"obj"は、アップロードされたデータ1件を表す。obj.parking_lot.latitudeなどはメンテナンス業者が決めた形式である。
一次データ取得部101が受信したデータが、自動販売機2から送信されたデータである場合には、No1の条件を満たすので、図8において「A」~「I」と記載されたルールが適用対象となる(図8において「A」~「I」に対応する欄に”Y”が記載されている)。
No1の条件を満たすときは、まず、図8においてルール「A」が適用されるので、データ変換部102は図9の「A」欄を参照し、一次データを二次データに変換する。
具体的には、図9のNo9に記載されているように、"obj.device_id"という一次データが、"LOCATION.PLACE_ID"という二次データに変換される。"LOCATION"は、巡回対象地点に関する情報であることを表す。
また図9のNo10に記載されているように、"obj.parking_lot.latitude"という一次データが、"LOCATION.LATITUDE"という二次データに変換される。同様に、図9のNo11に記載されているように、"obj.parking_lot.longitude"という一次データが、"LOCATION.LONGITUDE"という二次データに変換される。
図9のNo13には、"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)"という算術式を用いて、一次データから変換されることが記載されている。
さらに図9のNo14に記載されているように、"obj.estimate_work_minutes"という一次データが、"LOCATION.WORK_TIME"という二次データに変換される。
また図9のNo16に記載されているように、"obj.vehicle_limit"という一次データが、"LOCATION.VEHICLE_LIMIT"という二次データに変換される。
次に、図8においてルール「B」「C」「D」が適用される場合について説明する。この場合、データ変換部102は、"obj.business_hour"という一次データの値が"type1"である場合は、No2の条件を満たすので、ルール「B」が適用され、図9の「B」欄を参照して"LOCATION.DURATIONという二次データの値を"{900,1800}"に設定する。また"type2"である場合は、No3の条件を満たすので、ルール「C」が適用され、図9の「C」欄を参照して"{900,1300}"に設定する。同様に、"type3"である場合は、No4の条件を満たすので、ルール「D」が適用され、図9の「D」欄を参照して"{1300,1800}"に設定する。
次に、図8においてルール「E」「F」「G」が適用される場合について説明する。
この場合、データ変換部102は、一次データに含まれるデータが図8のNo5に示した条件式を満たす場合、ルール「E」が適用され、図9の「E」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"EXCLUDED"(巡回不要地点)にする。
図8のNo5において、"item1_remaining"、"item2_remaining"、"item3_remaining"は、商品1、商品2、商品3の商品残量を表すが、上述したように、商品残量は商品の在庫可能最大量と商品補充可能量の差として換算可能である。このため、"item1_remaining"、"item2_remaining"、"item3_remaining"も巡回の必要性に関わるデータに含まれる。
条件No5は、各レーンごとに、在庫可能量に対する、1日の終わりの時点(例えば午後5時)の商品残量(1次データ送信時点(例えば午前7時)の残量から1日の予想消費量を引いた量)の割合を求め、この割合を商品の補充の必要性を示す指標値としている。そしてデータ変換部102は、この指標値が0.8(8割)を超えている場合に巡回不要と判断している。
一方、データ変換部102は、一次データに含まれるデータが、図8のNo6に示す条件式を満たす場合、ルール「F」が適用され、図9の「F」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"MANDATORY"(巡回必須地点)にする。
図8のNo6においても、"item1_remaining"、"item2_remaining"、"item3_remaining"は、商品1、商品2、商品3の商品残量であり、No5と同様に、巡回の必要性に関わるデータである。
図8のNo6では、各レーンごとに、1日の終わりの時点(例えば午後5時)の商品残量(1次データ送信時点(例えば午前7時)の残量から1日の予想消費量を引いた量)を求め、この残量を商品の補充の必要性を示す指標値としている。そしてデータ変換部102は、この指標値が、重要度のレベルがAの自動販売機2では10未満、重要度のレベルがBの自動販売機2では0未満の場合に巡回必須と判断している。
また、一次データに含まれるデータが図8のNo5及びNo6のいずれの条件式も満たさない場合、ルール「G」が適用され、データ変換部102は、図9の「G」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"AUTO"(自動設定)にする。
もしルール「G」を設けずに、各巡回地点のそれぞれに対してルール「E」「F」のみを適用した場合には、各自動販売機2の状態によっては、巡回すべき地点の数が多すぎたり少なすぎたりする場合がある。例えば「巡回必須地点」の数が多すぎる場合、全ての「巡回必須地点」を1日で巡回しきれないような巡回経路が生成される可能性がある。
これを防止するため、巡回の優先度に「自動設定」を設ける。「自動設定」になっている地点は、以下のようにして「巡回任意地点」と「巡回必須地点」と「巡回不要地点」に振り分けられる。
まず、巡回経路生成装置10に、作業者1人当たり、「巡回必須地点」をX地点、「巡回任意地点」をY地点割り当てる、という設定をしておく。
そしてデータ変換部102は、「自動設定」に設定されている地点を重要度順にソートする。重要度は、メンテナンス業者と取り交わされたSLA(Service Level Agreement)によって自動販売機2毎に定められるが(後述するNo7)、図12に示す様に、自動販売機2のセンサ値やセンサ値の変動量等に応じて定められるようにしても良い。
そしてデータ変換部102は、重要度が高い順に、以下の(式1)によって定まる数の地点を「巡回必須地点」にし、"LOCATION.PRIORITY"の値を設定する。
作業者数×X-優先度がすでに「巡回必須地点」に設定されている地点数 …(式1)
次に、データ変換部102は、(式2)によって定まる数の地点を、「巡回任意地点」に設定し、"LOCATION.PRIORITY"の値を設定する。
作業者数×Y-優先度がすでに「巡回任意地点」に設定されている地点数 …(式2)
そしてデータ変換部102は、残りの地点を「巡回不要地点」に設定し、"LOCATION.PRIORITY"の値を設定する。
これにより、「自動設定」となった各地点のうち、相対的に重要度が高い地点を優先的に巡回させることができる。
このようにして、二次データには、巡回対象の地点が、必ず巡回するべき「巡回必須地点」であるか、巡回してもしなくて良い「巡回任意地点」であるか、あるいは巡回しない「巡回不要地点」であるか、のいずれであるかを示すデータ(LOCATION.PRIORITY)が含まれており、データ変換部102は、巡回対象の各地点の一次データに含まれる巡回の必要性に関わるデータを元に、各地点を、巡回必須地点、巡回任意地点、又は巡回不要地点のいずれかに分類し、その結果を各地点の二次データとして生成している。
このように二次データを生成しておくことで、巡回経路生成部106が巡回経路を生成する際に、全ての巡回必須地点が経路に含まれ、かつ、全ての巡回不要地点が経路に含まれないような巡回経路が生成される。
次に、図8においてルール「H」「I」が適用される場合について説明する。
この場合、データ変換部102は、"obj.importance_level"という一次データの値が"A"である場合は、No7の条件を満たすのでルール「H」を適用し、び図9の「H」欄を参照して"LOCATION.IMPORTANCE"という二次データの値を1.5×LOCATION.REPLENISHMENTとする。"LOCATION.REPLENISHMENT"は、図9のNo13により生成される二次データの値である。
一方、データ変換部102は、"obj.importance_level"という一次データの値が"A"でない場合は、No7の条件を満たさないのでルール「I」を適用し、図9の「I」欄を参照して"LOCATION.IMPORTANCE"という二次データの値をLOCATION.REPLENISHMENTの値とする。
次に、図8においてルール「J」が適用される場合について説明する。
ルール「J」は、一次データ取得部101が取得したデータがNo8の条件を満たした場合、つまり、一次データ取得部101が受信したデータが車両から送信されたデータである場合に適用されるルールである。
この場合、例えば図9のNo18に記載されているように、"vehicle.vehicle_id"という一次データが、"VEHICLE.VEHICLE_ID"という二次データに変換される。"VEHICLE"は、車両に関する情報であることを表す。
また図9のNo19に記載されているように、"vehicle.latitude"という一次データが、"VEHICLE.LATITUDE"という二次データに変換される。同様に、図9のNo20に記載されているように、"vehicle.longitude"という一次データが、"VEHICLE.LONGITUDE"という二次データに変換される。
また図9のNo21に記載されているように、"vehicle.size"という一次データが、"VEHICLE.SIZE"という二次データに変換される。
なお、上述した"LOCATION.LATITUDE"、"VEHICLE.LATITUDE"などは、巡回経路生成装置10側で用意された巡回経路機能のプロパティ値である。
以上のようにして、データ変換部102は、ルール1001を用いて一次データを二次データに変換する。
なお図8及び図9に示したように、ルール1001は、数字やテキスト等の文字を用いて記述することができる。このため、ルール1001(変換ルール)の記述が容易であり、追加や削除、変更等の更新も容易である。これにより、自動販売機2や一次データの仕様変更があっても、迅速に対応することが可能である。
またルール1001は、図8及び図9に示したようにテーブル形式で表現される場合のみならず、"if~then~"のような構文式を用いて表現することも可能である。いずれの場合も、変換ルールを文字で表現することにより、容易に記述することが可能である。
また、図8や図9以外にも、ルール1001に記述され得る内容例を図12に示す。図12に示す様に、ルール1001には様々な内容を設定することができる。
<変換ルール入力部>
図4に戻って、変換ルール入力部104は、新たな変換ルールの入力を受け付けるユーザインタフェースを備え、上述したように、テキストにより変換ルールの入力を受け付ける。変換ルール入力部104は、例えば入力装置14により具現化される。
<変換ルール更新部>
変換ルール更新部105は、変換ルール記憶部103に記憶されている変換ルールを、新たな変換ルールに更新する。このように、変換ルール入力部104及び変換ルール更新部105を備えることにより、変換ルールの追加や削除、変更等を行う場合にも迅速に対応することが可能となる。
<巡回経路生成部>
巡回経路生成部106は、上記のようにして一次データから変換された二次データを用いて、巡回経路を生成する。本実施形態では、巡回経路生成部106は、巡回経路エンジン1004として具現化されている。
巡回経路生成部106が巡回経路を生成するアルゴリズムは特に問わないが、巡回経路生成部106は、例えば、山登り法、シミュレーテッドアニーリング法、遺伝的アルゴリズム、タブーサーチ等を用いて巡回経路を生成する。本実施形態では、巡回経路生成部106は、山登り法またはシミュレーテッドアニーリング法を用いて巡回経路を生成する。
まず巡回経路生成部106は、巡回経路の複数の候補(候補経路)を生成する。本実施形態では、巡回経路生成部106は、全ての巡回必須地点を経路に含み、全ての巡回不要地点を経路に含まないようにこれらの候補経路を生成する。
具体的には、巡回経路生成部106は、まずは巡回対象の全ての自動販売機2に対して、これらの自動販売機2を所定の順序で(例えばランダムな順序に)並べることにより巡回経路の候補経路(第1候補)を生成する。
もちろん、第1候補には、全ての巡回任意地点が含まれていなくても良い。この場合は、巡回経路生成部106は、巡回対象の全ての地点の中から、少なくとも全ての巡回必須地点を含むように(巡回任意地点は、0個以上が含まれていれば良い。巡回任意地点は例えばランダムに選ぶ)複数の自動販売機2を選択した上で、これらの自動販売機2を所定の順序で並べることにより巡回経路の第1候補を生成する。
その後、巡回経路生成部106は、第1候補に含まれる自動販売機2の中から選択(例えばランダムに選択)した2つの自動販売機2の順序の入れ替えや、第1候補に含まれる巡回任意地点から選択(例えばランダムに選択)した自動販売機2の削除、あるいは、第1候補に含まれない巡回任意地点から選択(例えばランダムに選択)した自動販売機2の巡回経路への組み込みを行い、第2候補を生成する。
そして巡回経路生成部106は、上記第2候補を第1候補として再び上記処理を繰り返すことで、順次、新たな候補経路を生成する。
そして巡回経路生成部106は、上記候補経路のそれぞれに対して、作業員が巡回を開始してから終了するまでの所要時間や巡回経路の経路長、各自動販売機2の巡回の優先度等の様々な指標値を元に、所定のコスト関数を用いてコストを求め、複数の候補経路の中から一つの候補を選出することにより、巡回経路を生成する。
巡回経路生成部106は、生成された巡回経路を、出力装置15あるいは通信装置16に出力する。
以上のような態様により、巡回経路生成装置10は、自動販売機2から送られてくる一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。そしてこれにより、ソフトウェアのカスタム開発を行わなくても様々な仕様に対応することが可能になる。
==具体例==
次に、巡回経路生成装置10の具体的なシステム構成図を図5に示す。なお図5において、自動販売機2はデバイス20と記載されている。
遠隔地にあるデバイス20(自動販売機2など)から、通信ネットワーク5経由でデータが巡回経路生成装置10にアップロードされる。デバイス20は、所定のタイミング(1日に1回など)で、デバイス20の状態(位置情報や最新の商品在庫数など)をデータとしてアップロードする。自動販売機2からアップロードされるデータの例を図6に示す。
また、巡回作業者のモバイル端末もデバイス20とみなし、巡回作業者の位置情報などをデータとしてアップロードしても良い。モバイル端末からアップロードされるデータの例を図7に示す。
デバイス20から通信ネットワーク5を介して巡回経路生成装置10に送信されてくるデータは、一次データ取得部101が取得する。
一次データ取得部101が取得したデータは、ストレージ1002に格納されると共に、データ変換部102、より具体的にはルールエンジン1003に入力される。
なお、デバイス20が、前回アップロードしたデータとの差分をアップロードした場合(自動販売機2の在庫センサーの値のように、時々刻々変化する変動データだけがアップロードされ、自動販売機2の位置情報のように前回からの変化がない固定データがアップロードされない場合)、一次データ取得部101は、ストレージ1002に保存された既存の固定データとマージして一次データを再現する。
ルールエンジン1003は、この一次データに対して、巡回経路生成装置10のユーザごとに設定されたルール1001を適用して、巡回経路を生成するための二次データに変換し、巡回地点情報としてストレージ1023に格納する。ルールエンジン1003は、この際、巡回地点のグループ化などを行うため(後述する)、別のデバイス20がアップロードしたデータを参照することもできる。
ルールエンジン1003は、ルール1001を参照することで、デバイス20から取得したオブジェクト(一次データ)内の各データを二次データに変換する。
図6や図7に示した例では、オブジェクトには、巡回経路生成装置10のユーザの視点で定められた情報(第1仕様あるいは第2仕様の一次データ)が格納されている。
なお、デバイス20から最新の補充可能量だけがアップロードされた場合は、一次データ取得部101は、あらかじめストレージ1002に記憶されている既存の緯度経度などのデータとマージすることで図6や図7のようなオブジェクトを再現する。
ルールエンジン1003は、オブジェクト1件をルール1001によって巡回経路生成用の二次データ、具体的には、巡回地点情報や車両情報に変換する。なお巡回地点情報はストレージ1023に格納され、車両情報はストレージ1024に格納される。
ルール1001は、巡回経路生成装置10のユーザごとに設けられる。ルール1001は、図8、図9に示したような決定表で表現できる(同じ情報はif-then形式で表現することもできる)。この決定表は、所定のフォーマットのテキストで記述することで作成され、巡回経路生成装置10に入力される。
決定表には、アップロードされたデータ(一次データ)と、訪問先の位置情報および車両情報(二次データ)への変換ルールが記述される。
移動情報取得部1022は、ストレージ1023に格納された巡回地点情報のうち、緯度経度の情報を取得して、地図1021を参照して移動情報を作成する。移動情報取得部1022は、任意の2つの地点の緯度経度の組み合わせから、地点間の移動時間を計算して、結果をストレージ1025に格納する。
地図1021を参照して移動時間を推定するようにすることにより、生成される巡回経路の精度を高めることができる。
なお、巡回経路生成装置10は地図1021を具備しても良いし具備しなくても良い。
巡回経路生成装置10が地図1021を具備する場合は、図5に示したように、巡回経路生成装置10の内部に地図1021を含める。地図1021には道路のネットワークが記録されている。そして指定された2地点の直近の道路同士を移動するパスを既存の技術(ダイクストラ法やA*アルゴリズムなど)によって求め、そのパスの距離と特定の速度から移動時間を計算する。地図1021の道路を示すパスに想定移動速度のデータを含めても良い。
一方、地図1021を具備しない場合は、巡回経路生成装置10は、外部の地図1021を利用する。
この場合、巡回経路生成装置10は、外部の地図サービスに問い合わせて2点間の移動時間を取得する。たとえば、緯度経度を2点指定すると、その地点の間の想定移動時間を返すようなAPI(Application Programming Interface)を提供するような地図サービスを利用可能である。
巡回経路エンジン1004は、毎朝の定期処理などで巡回経路が必要になったタイミングで、巡回地点情報、車両情報、移動情報を取得し、巡回対象の各地点を効率よく巡回する巡回経路を計算する。
次に、上述した複数地点のグループ化について説明する。
複数地点のグループ化とは、巡回対象の複数の地点のデータを1つの巡回対象地点のデータとしてまとめることである。
つまり、データ変換部102は、複数地点の一次データにそれぞれ含まれる位置を示すデータが同一の場所を示している場合には、これら複数地点の一次データを、上記同一の場所を巡回対象の一つの地点とする二次データに変換する。
複数地点のグループ化を行うことで、巡回経路エンジン1004は、グループ化された複数の地点を一つの巡回対象地点として巡回経路を生成する。これにより、例えば同一ビル内にある複数の自動販売機2へ同一の作業者が同一のタイミングで巡回できるような巡回経路を生成することが可能となる。
複数地点のグループ化を行う場合は、複数地点の一次データを一つの地点の二次データとして出力されるようにルール1001が作成される。複数地点のグループ化を行う場合のルール1001の具体例を図10及び図11に示す。なお図10の内容は図8に対応しており、図11の内容は図9に対応している。そのため、重複する説明は適宜省略する。
図10は、一次データがNo1~No8に示す各条件にあてはまるか否かを判定するためのテーブルであり、図11は、一次データが上記No1~No8の何れかにあてはまった場合に、一次データから二次データへ変換する方法を定義したテーブルである。
具体的に説明すると、まず図10において、No1は、一次データ取得部101が受信したデータが、自動販売機2から送信されたデータであるか否かを判定するものである。
一次データ取得部101が受信したデータが、自動販売機2から送信されたデータである場合には、No1の条件を満たすので、図8において「A」~「I」と記載されたルールが適用対象となる(図10において「A」~「I」に対応する欄に”Y”が記載されている)。
ここで、図10のNo1の欄に記載されているように、データ変換部102は、ストレージ1002を検索し、各自動販売機2から一次データ取得部101が受信したデータのうち、"building_id"が同一のデータを、group[]という配列の要素にする。これにより、データ変換部102は、"building_id"が同一のデータを同一の場所のデータであるとみなして二次データへの変換を行う。
No1の条件を満たすときは、まず、図10においてルール「A」が適用されるので、データ変換部102は図11の「A」欄を参照し、一次データを二次データに変換する。
図11の「A」欄のうち、No10、No11、No16は図9と同じであるので、説明を省略する。
No9では、"obj.building_id"という一次データが、"LOCATION.PLACE_ID"という二次データに変換される。
No13では、"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が結果となる。
これにより、その日の作業終了時点での同一ビル内の全自動販売機2の全商品の補充可能量の合計が、"LOCATION.REPLENISHMENT"に設定される。
さらに図9のNo14に記載されているように、"group.sum_all(g -> g.estimate_work_minutes)"という算術式を用いて、同一ビル内の各自動販売機2の作業時間の合計が、"LOCATION.WORK_TIME"に設定される。
図10においてルール「B」「C」「D」が適用される場合は、図8と同じなので説明を省略する。
次に、図10においてルール「E」「F」「G」が適用される場合について説明する。
この場合、データ変換部102は、一次データに含まれるデータが図10のNo5に示した条件式を満たす場合、ルール「E」が適用され、図11の「E」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"EXCLUDED"(巡回不要地点)にする。
条件No5に記載されている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が結果となる。
これにより、データ変換部102は、同一ビル内の自動販売機2において、1日の終わりの時点(例えば午後5時)の商品ごとの残量の合計がそれぞれの在庫可能量の何割あるかを商品の補充の必要性を示す指標値としている。そしてデータ変換部102は、各商品の指標値が全ての自動販売機2で0.8を超えている場合に、このビルへの巡回が不要と判断される。
一方、データ変換部102は、一次データに含まれるデータが、図10のNo6に示す条件式を満たす場合、ルール「F」が適用され、図11の「F」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"MANDATORY"(巡回必須地点)にする。
条件No6に記載されている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が結果となる。
これにより、同一ビル内の自動販売機2の中で、今日中にいずれかの商品の最低在庫数が10以下となるサービスレベルがAの自動販売機2、あるいは、いずれかの商品で品切れを起こすサービスレベルがBの自動販売機2が一つでもある場合には、このビルへの巡回が必須と判断される。
また、一次データに含まれるデータが図10のNo5及びNo6のいずれの条件式も満たさない場合、ルール「G」が適用され、データ変換部102は、図11の「G」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"AUTO"(自動設定)にする。これにより、このビルへの巡回が「自動設定」と判断される。
次に、図10においてルール「H」「I」が適用される場合について説明する。
この場合、データ変換部102は、"group.or_all(g -> g.importance_level="A") "という算術式を用いて、同一ビル内の全ての自動販売機2のサービスレベルが"A"である場合は、No7の条件を満たすのでルール「H」を適用し、図11の「H」欄を参照して"LOCATION.IMPORTANCE"という二次データの値を1.5×LOCATION.REPLENISHMENTとする。"LOCATION.REPLENISHMENT"は、図11のNo13により生成される二次データの値である。
一方、データ変換部102は、同一ビル内の全ての自動販売機2のサービスレベルが"A"でない場合は、No7の条件を満たさないのでルール「I」を適用し、図11の「I」欄を参照して"LOCATION.IMPORTANCE"という二次データの値をLOCATION.REPLENISHMENTの値とする。
以上のように、図10及び図11に示したルール1001を用いることにより、データ変換部102は、複数地点の一次データにそれぞれ含まれる位置を示すデータが同一の場所を示している場合には、これら複数地点の一次データを、上記同一の場所を巡回対象の一つの地点とする二次データに変換することができる。そしてこれにより、同一ビル内にある複数の自動販売機2へ同一の作業者が同一のタイミングで巡回できるような巡回経路を生成することが可能となる。
[第2実施形態]
次に第2実施形態に係る巡回経路生成装置10について説明する。なお、第1実施形態と重複する説明は適宜省略する。
第1実施形態では、巡回経路生成装置10が、自動販売機2Aから取得した第1仕様の一次データと、自動販売機2Bから取得した第2仕様の一次データを、それぞれ、二次データに変換して巡回経路を生成する場合について説明したが、第2実施形態に係る巡回経路生成装置10は、自動販売機2に限らず、様々なデバイス20から様々な仕様の一次データを取得し、それらを二次データに変換して、巡回経路を生成する。
例えば図13に示す様に、第2実施形態に係る巡回経路生成装置10は、通信ネットワーク5(図13には不図示)を介して、複数の自動販売機2A、2Bの他に、複数のタンク2Cと通信可能に接続されている。自動販売機2A、2B及びタンク2Cはいずれもデバイス20の一例である。
タンク2Cは、各地のガソリンスタンドや工場などに設置される燃料貯蔵用の設備であり、各種石油製品(ガソリンや軽油、灯油などの燃料)を貯蔵するための設備である。そして燃料を積載したタンクローリー等の車両が順次タンク2Cを巡回することにより、各タンク2Cに燃料が補充される。
タンク2Cは、不図示のデータ送信機を備えており、それぞれの位置を示すデータ及び巡回の必要性に関わるデータを含む一次データを通信ネットワーク5を介して定期的に(例えば毎日所定時刻に)、あるいは不定期に(例えば巡回経路生成装置10から送信されるリクエストに応答する際に)巡回経路生成装置10に送信する。タンク2Cから送信される一次データは、自動販売機2A、2Bとは異なる第3仕様に準拠したデータである。
タンク2Cから送信される一次データは、例えば図14に示すように、「タンクのデバイスID」(device_id)、「タンクの設置場所」(latitude,longitude)、「タンク内の燃料の液面の位置」(sensor_distance)、「タンクの種別」(tank_type)、「タンクでの作業時間見込み」(estimate_work_minutes)の各データを含む。
これらの内、巡回の必要性に関わるデータは、例えばタンク2C内の液面の位置を表すデータや、タンク2Cの種別を表すデータなどである。
本実施形態に係るタンク2Cは、内部の燃料の液面の位置を計測する不図示のセンサを備えており、このセンサにより計測された液面の位置と、満タン時の液面の位置との差を、上記のsensor_distanceとして送信する。
またタンク2Cには複数の種類があり、本実施形態では"TNK-A10"という種類と、" TNK-A20"という種類の2種類がある。
"TNK-A10"というタンク2Cは、燃料貯蔵量が最大(満タン時)1000リットルであり、また満タン時の液面の高さが底面から100cmとなる直方体の形状をしている。そのため、液面高さを満タン時と比べて、1cmあたり10リットルに換算することができる。
一方、"TNK-A20"というタンク2Cは、燃料貯蔵量が最大(満タン時)2000リットルであり、また満タン時の液面の高さが底面から100cmとなる直方体の形状をしている。そのため、液面高さを満タン時と比べて、1cmあたり20リットルに換算することができる。
タンク2Cに燃料を運搬する車両の運転手は、拠点C(3C)を起点及び終点としてタンク2Cを巡回する。そして図15に示す様に、車両(車両が具備するデータ送信機)、あるいは運転手が携帯する不図示の情報端末から、定期的(例えば10分毎)に、あるいは不定期に(例えば車両が巡回経路生成装置10からの送信リクエストを受信した際に)、「車両ID」(vehicle_id)、「車両の現在位置の緯度」(latitude)、「車両の現在位置の経度」(longitude)等のデータが巡回経路生成装置10に送信される。
図13に戻って、巡回経路生成装置10は、自動販売機2Aに対する巡回経路を生成するA社用プラットフォーム100Aと、自動販売機2Bに対する巡回経路を生成するB社用プラットフォーム100Bと、タンク2Cに対する巡回経路を生成するタンク巡回用プラットフォーム100Cと、を有する。
タンク巡回用プラットフォーム100Cは、A社用プラットフォーム100AやB社用プラットフォーム100Bと同様に、クラウドや巡回経路生成装置10上の仮想マシンとして構成されても良いし、専用に用意されたハードウェアを用いて構成されても良い。
またタンク巡回用プラットフォーム100Cの構成は、A社用プラットフォーム100AやB社用プラットフォーム100Bと同様であり、ルールC(1001C)と、ストレージ1002Cと、ルールエンジン1003Cと、巡回経路エンジン1004Cとを有している。
そしてルールC(1001C)を、タンク2Cや車両から送信される一次データの仕様に合わせて設定しておけば、例えば、ストレージ1002C、ルールエンジン1003C、及び巡回経路エンジン1004Cを、共通プラットフォーム1005Cとして構築することが可能となる。そしてこの場合、タンク2Cや車両から送信される一次データの仕様変更があっても、ルールC(1001C)を更新するのみで共通プラットフォーム1005Cには手を加えることなく、迅速に仕様変更に対応することが可能となる。
また、巡回経路生成装置10は、共通プラットフォーム1005A、1005B、1005Cを共通プラットフォーム1005として共用し、ルールA(1001A)、ルールB(1001B)、及びルールC(1001C)のみを個別に用意しておくように構成しても良い。
つぎに、本実施形態に係るルールC(1001C)の一部を、具体例として図16及び図17に示す。
図16は、一次データがNo1~No6に示す各条件にあてはまるか否かを判定するためのテーブルであり、図17は、一次データが上記No1~No6の何れかにあてはまった場合に、一次データから二次データへ変換する方法を定義したテーブルである。
具体的に説明すると、まず図16において、No1は、一次データ取得部101が受信したデータが、タンク2Cから送信されたデータであるか否かを判定するものである。
一次データ取得部101がタンク2Cから受信するデータは、タンク2Cの燃料補充を行う業者(以下、C社とも記す)により任意に定められたデータ形式(第3仕様)であり、条件No1に記載されている"obj"は、アップロードされたデータ1件を表す。obj.tank_typeなどは燃料補充業者(C社)が決めた形式である。
一次データ取得部101が受信したデータが、タンク2Cから送信されたデータである場合には、No1の条件を満たすので、図16において「A」~「F」と記載されたルールが適用対象となる(図16において「A」~「F」に対応する欄に”Y”が記載されている)。
No1の条件を満たすときは、まず、図16においてルール「A」が適用されるので、データ変換部102は図17の「A」欄を参照し、一次データを二次データに変換する。
具体的には、図17のNo7に記載されているように、"obj.device_id"という一次データが、"LOCATION.PLACE_ID"という二次データに変換される。"LOCATION"は、巡回対象地点に関する情報であることを表す。
また図17のNo8に記載されているように、"obj.place.latitude"という一次データが、"LOCATION.LATITUDE"という二次データに変換される。同様に、図17のNo9に記載されているように、"obj.place.longitude"という一次データが、"LOCATION.LONGITUDE"という二次データに変換される。
図17のNo10には、"LOCATION.DURATION"という二次データに、{0000,2400}が設定されることが記載されている。
さらに図17のNo12に記載されているように、"obj.estimate_work_minutes"という一次データが、"LOCATION.WORK_TIME"という二次データに変換される。
また図17のNo14に記載されているように、"LOCATION.VEHICLE_LIMIT"という二次データにLARGEが設定される。
次に、図16においてルール「B」「C」が適用される場合について説明する。この場合、データ変換部102は、"obj.tank_type"という一次データの値が"TNK-A10"である場合は、No2の条件を満たすので、ルール「B」が適用され、図17の「B」欄を参照して"LOCATION.REPLENISHMENTという二次データの値をobj.sensor_distance×1000/100に設定する。また" TNK-A20"である場合は、No3の条件を満たすので、ルール「C」が適用され、図17の「C」欄を参照してobj.sensor_distance×2000/100に設定する。
次に、図16においてルール「D」「E」「F」が適用される場合について説明する。
この場合、データ変換部102は、一次データに含まれるデータが図16のNo4に示した条件式を満たす場合、ルール「D」が適用され、図17の「D」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"EXCLUDED"(巡回不要地点)にする。
条件No4は、タンク2C内の液面の位置と、満タン時の液面の位置との差を、商品の補充の必要性を示す指標値としている。そしてデータ変換部102は、この指標値が20cm未満の場合に巡回不要と判断している。
一方、データ変換部102は、一次データに含まれるデータが、図16のNo5に示す条件式を満たす場合、ルール「E」が適用され、図17の「E」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"MANDATORY"(巡回必須地点)にする。
図16のNo5は、タンク2C内の液面の位置と、満タン時の液面の位置との差を、商品の補充の必要性を示す指標値としている。そしてデータ変換部102は、この指標値が80cm以上の場合に巡回必須と判断している。
また、一次データに含まれるデータが図16のNo4及びNo5のいずれの条件式も満たさない場合、ルール「F」が適用され、データ変換部102は、図17の「F」欄を参照して、二次データにおける"LOCATION.PRIORITY"の値を"AUTO"(自動設定)にする。
そして巡回経路生成装置10は、第1実施形態と同様に、「自動設定」になっている地点を、「巡回任意地点」と「巡回必須地点」と「巡回不要地点」に振り分ける。
次に、図16においてルール「G」が適用される場合について説明する。
ルール「G」は、一次データ取得部101が受信したデータがNo6の条件を満たした場合、つまり、一次データ取得部101が受信したデータが車両から送信されたデータである場合に適用されるルールである。
この場合、例えば図17のNo16に記載されているように、"vehicle.vehicle_id"という一次データが、"VEHICLE.VEHICLE_ID"という二次データに変換される。"VEHICLE"は、車両に関する情報であることを表す。
また図17のNo17に記載されているように、"vehicle.latitude"という一次データが、"VEHICLE.LATITUDE"という二次データに変換される。同様に、図17のNo18に記載されているように、"vehicle.longitude"という一次データが、"VEHICLE.LONGITUDE"という二次データに変換される。
また図17のNo19に記載されているように、"VEHICLE.SIZE"という二次データにLARGEが設定される。
以上のようにして、データ変換部102は、ルールC(1001C)を用いて一次データを二次データに変換する。
このような態様により、巡回経路生成装置10は、巡回対象の各地点から様々な仕様の一次データを取得し、それらを所定仕様に標準化された二次データに変換して巡回経路を生成することが可能となる。そしてこれにより、ソフトウェア開発業者は、様々な業種の企業から巡回経路を生成するシステムの開発依頼を受けた場合であっても、各企業別にソフトウェアのカスタム開発を行わなくても対応可能な汎用性の高い巡回経路生成装置10を実現することが可能になる。
以上、第1実施形態及び第2実施形態に係る巡回経路生成装置10、巡回経路生成装置10の制御方法及びプログラムについて説明したが、これらの実施形態に係る巡回経路生成装置10、巡回経路生成装置10の制御方法及びプログラムによれば、巡回対象の各地点の一次データの仕様がどのようなものであっても、所定仕様に標準化された二次データを用いて巡回経路を生成することが可能となる。そしてこれにより、汎用性の高い巡回経路生成装置10を実現でき、ソフトウェアのカスタム開発を行わなくても様々な仕様に対応することが可能になる。
また巡回経路生成装置10は、ルールエンジン1003を備えることで、任意の形式のユーザーデータを、巡回経路の作成条件に変換して使用できる。これによって、巡回経路生成装置10を含むソリューションを低コストで構築できる。
また巡回経路を生成する際には、巡回対象の地点や、地点間の移動時間、巡回の優先度、車両の現在位置など、様々な巡回条件を指定する必要があるが、IoTプラットフォームを使ってシステムを構築すると、ユーザの視点から設計された形式のデータがストレージ1002に格納されることになる。巡回経路生成装置10は、これらをルールエンジン1003によって変換(または割り当て)することにより、柔軟かつ安価に巡回経路を生成できるようになる。
巡回経路生成装置10は、巡回経路の生成条件を作成するためにルールエンジン1003を使用することで、巡回経路生成装置10のユーザが定義した一般的なデータを巡回経路用の条件に変換して利用する。これにより、ユーザごとにカスタムプログラムで実装する必要がなく、ルール1001の設定だけで各ユーザの要望を実現できる。
巡回経路生成装置10は、ストレージ1002に格納されているユーザごとに設計されたデータを、ルールエンジン1003により巡回経路作成条件に変換する。ユーザの視点の任意形式のデータを、ルール1001(つまり設定)によって巡回経路の生成条件に変換できるため、ユーザごとのカスタム範囲はルール1001の差し替えで済むため最小限となり、巡回経路生成装置10の構築コストが軽減できる。
巡回経路生成装置10は、ルールエンジン1003を使うことにより、IoTプラットフォームに格納されているユーザ視点での情報を巡回経路探索に必要な情報に変換して、巡回経路生成の入力条件とする。
尚、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得るとともに、本発明にはその等価物も含まれる。
例えば第2実施形態において、自動販売機2Aを巡回する巡回経路と、自動販売機2Bを巡回する巡回経路と、タンク2Cを巡回する巡回経路と、を同時に生成できるような巡回経路生成装置10を説明したが、どのようなデバイス20からのデータを用いる場合であっても巡回経路生成装置10の内部構成は同一であり、各デバイス20の仕様に応じたルール1001を用意することにより同様に適用することが可能である。
このため、例えば、農地の複数個所に設けられている農業用給水タンクに水を補給する業務や、営業担当者による顧客訪問業務、各地の水田の水位計測業務等、様々な場面に適用することができる。