(58)【調査した分野】(Int.Cl.,DB名)
前記移動時間および前記配送時間の計算では、前記複数の区間ごとの前記実移動時間の確率分布に基づくモンテカルロ法を用い、前記移動時間および前記配送時間を計算する請求項1記載の配送計画プログラム。
前記配送時間の計算では、前記共有化グラフにおける下位のノードから順に計算対象のノードとし、前記計算対象のノードの下位に接続された前記第1の区間要素の前記移動時間、前記第2の区間要素に対応する区間の実移動時間、または前記計算対象のノードの下位に接続された他のノードでの移動に要する時間の計算結果に基づいて、前記計算対象のノードの下位に直接または間接的に接続された区間要素に対応する全区間の移動に要する合計時間を計算する、
請求項3記載の配送計画プログラム。
前記共有化グラフの作成では、配送時刻が指定された時刻指定の配送物がある場合、前記複数の配送経路のうち、配送元から前記時刻指定の配送物の配送先までの経路に含まれる区間それぞれを示す第3の区間要素のみが、直接または間接的に下位に接続された第3のノードを、前記共有化グラフに含めることを特徴とする請求項3または4記載の配送計画プログラム。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る配送計画装置の機能構成例を示す図である。配送計画装置10は、記憶部11と演算部12とを有している。
【0012】
記憶部11は、配送物データ1や移動時間データ2を記憶する。配送物データ1は、例えば所定の配送元から配送する配送物に関するデータである。配送物データ1には、例えば配送先を指定する情報が含まれる。また配送時刻が指定されている配送物の場合、配送物データ1内に、配送時刻が含まれる。移動時間データ2は、道路を区間に区切ったときに、過去に区間を車両が通過するのに要した時間(実移動時間)の履歴である。
【0013】
演算部12は、記憶部11に格納されたデータを用いて、配送物を効率的に配送するための配送計画を立案する。演算部12は、まず、道路の複数の区間のうち配送時に通過する区間を組み合わせて、配送物を配送先に配送するための複数の配送経路3,4を作成する。配送経路3のIDを「配送経路#1」とし、配送経路4のIDを「配送経路#2」とする。配送経路3は、区間IDが「a,b,c,d,e,f,g,h,i,j」の各区間を通過する経路である。また配送経路4は、区間IDが「k,l,m,b,c,d,e,f,g,h,i,j」の各区間を通過する経路である。
【0014】
次に演算部12は、複数の配送経路3,4のうちの2以上の配送経路で通過する共通区間を検出する。
図1の例では、配送経路3,4における、区間ID「b,c,d,e,f,g,h,i,j」の区間が、共通区間である。このとき演算部12は、複数の配送経路3,4間の共通区間をくくり出した共有化グラフ5で表すことができる。
【0015】
共有化グラフ5は、複数のノード5a〜5dを枝(エッジ)で接続したものである。
図1中、共有化グラフ5の右側を上位として、左側を下位とする。ノード間を接続する枝は、下位から上位に向かう矢印である。共有化グラフ5では、共通区間に含まれる区間を示す区間要素が下位に接続されたノード5dが、共通区間を含む配送経路3,4それぞれに対応するノード5b,5cの下位に接続されている。また共有化グラフ5のノード5b,5cの下位には、配送経路3,4における共通区間以外の区間を示す区間要素が接続されている。なお共有化グラフ5では、区間に対応する区間要素を、区間の区間IDで表している。
【0016】
演算部12は、共通区間が検出されると、その区間を過去に移動したときの実移動時間に基づいて、共通区間を移動するのに要する移動時間を計算する。また演算部12は、配送経路3,4それぞれについての配送に要する配送時間を計算する。この際、演算部12は、複数の配送経路3,4における共通区間の移動に要する時間として移動時間を共用する。すなわち演算部12は、移動時間と実移動時間とに基づいて、共通区間以外の区間の移動に要する時間を追加で計算することで、複数の配送経路3,4それぞれについての配送に要する配送時間を計算する。なお実移動時間は、記憶部11内の移動時間データ2から得られる。配送時間の計算は、例えば複数の区間ごとの実移動時間の確率分布に基づくモンテカルロ法を用いて行うことができる。
【0017】
共通区間が共有化グラフ5で表されている場合、演算部12は、共有化グラフ5を用いて、配送時間の計算を行う。例えば演算部12は、共有化グラフ5における下位のノードから順に計算対象のノードとする。そして演算部12は、計算対象のノードの下位に接続された区間要素に対応する区間の実移動時間、および計算対象のノードの下位に接続された他のノードでの移動時間の計算結果に基づいて、合計の移動時間を計算する。この合計の移動時間は、計算対象のノードの下位に直接または間接的に接続された区間要素に対応する全区間の移動時間の合計である。
【0018】
なお、モンテカルロ法を用いる場合、配送経路3,4ごとに求めた移動時間の合計値が、複数生成される。すなわちモンテカルロ法を用いる場合、演算部12は、区間の実移動時間に基づいて、その区間の移動時間の確率分布を求める。そして確率分布に従った確率で、区間を移動する場合の移動時間を示す多数の値を、ランダムに生成する。演算部12は、区間に対応づけて、生成された各値を要素とするベクトルを作成する。配送時間の計算では、ノード5b〜5dそれぞれを計算対象ノードとしたとき、下位の区間要素に対応する区間のベクトル、および下位のノードの計算結果で得られたベクトルの足し算が行われる。演算部12は、ノード5aが計算対象ノードとなったとき、ノード5b,5cそれぞれの計算で得られたベクトル内の要素の値の所定の統計量を計算する。得られた統計量が、配送経路3,4それぞれの配送時間となる。統計量は、例えば各要素の値の平均値、または平均値に標準偏差を加えた値などである。
【0019】
配送経路3,4ごとの配送時間が得られると、演算部12は、複数の配送経路3,4の複数の配送時間を比較して、効率的な配送経路を判定する。例えば演算部12は、最も配送時間が短い配送経路を最適配送経路6として出力する。
【0020】
このように、複数の配送経路が考えられるとき、各配送経路の配送時間の計算に際し、共通区間をくくり出して、その区間の移動時間を先に計算し、その計算結果を共有することで、複数の配送経路それぞれの配送時間を効率的に計算できるようになる。特にモンテカルロ法を用いた場合、高精度に配送時間を求めるには、各区間の移動時間を示すランダムな値を、数百から数万程度生成することになる。このような値の生成と、生成された値の合計とが、複数の移動経路の共通する区間について重複して行われると、処理量が増えてしまう。第1の実施の形態では、このような重複した計算が抑止され、処理の効率化が図れる。
【0021】
しかも共通区間を共有化グラフ5で表現することにより、配送経路の数が多くても、配送経路間の区間の共有関係を正確に定義することができる。すなわち多数の配送経路間のすべての組み合わせにおける共有の区間を、漏れなく定義できる。その結果、配送時間の計算時の処理量の削減効果をより高めることができる。
【0022】
なお配送物の中には、配送時刻あるいは配送時間帯が指定されているものがある。そのような配送物がある場合、各配送経路について、指定された配送時刻にその配送物を配送できるかどうの判断が行われる。そのために、配送元から、配送時刻が指定された配送物の配送先までの移動時間の計算が行われる。この移動時間の計算を、配送経路の配送時間の計算とは別個に行うと、計算量が増えてしまう。
【0023】
そこで、共有化グラフ5の作成手順を工夫して、計算の効率化を図ることができる。例えば演算部12は、共有化グラフ5の作成時に、複数の配送経路3,4のうち、配送元から時刻指定の配送物の配送先までの経路に含まれる区間それぞれを示す区間要素のみが、直接または間接的に下位に接続されたノードを、共有化グラフ5に含める。
【0024】
このようなノードを共有化グラフ5に含めた場合、演算部12は、配送時間の計算において、当該ノードの下位に直接または間接的に接続された区間要素に対応する区間の移動時間の合計を計算する。そして演算部12は、その計算結果に基づいて、複数の配送経路それぞれについて、時刻指定の配送物を、指定された配送時刻までに配送できるかどうかを判断する。演算部12は、指定された配送時刻までに配送できない配送経路については、最適配送経路6の候補から除外する。
【0025】
このように配送時刻が指定された配送物の配送先までの移動時間を、配送経路全体の配送時間の計算過程で算出できるようにしたことで、別処理で移動時間の計算を実行せずに済み、処理が効率化できる。
【0026】
なお、演算部12は、例えば配送計画装置10が有するプロセッサにより実現することができる。また、記憶部11は、例えば配送計画装置10が有するメモリにより実現することができる。
【0027】
また、
図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に、第2の実施の形態について説明する。第2の実施の形態は、できるだけリアルタイムの道路状況に基づいて、複数の配送車を用いた配送計画を立案するものである。
【0028】
図2は、第2の実施の形態のシステム構成例を示す図である。配送計画装置100は、配送車31〜33による、配送元40から配送先41,42への配送物の配送計画を立案する。配送計画装置100は、配送計画の立案に際し、道路の交通状況に関する情報をリアルタイムに取得し、現時点での最適な配送計画を立案する。例えば配送車31には、GPS(Global Positioning System)を用いた測地機能を有する車載器31aが搭載されている。車載器31aは、無線通信機能を有しており、ネットワーク20を介して配送計画装置100と通信できる。配送計画装置100は、車載器31aから、配送途中の配送車31の位置を定期的に取得し、配送車31が通過した経路の所要時間を算出する。他の配送車32,33にも同様の車載器が搭載され、多数の配送車31〜33が配送のために道路を移動することで、配送計画装置100は、所定の区間の所要時間のデータを多数取得することができる。
【0029】
図3は、第2の実施の形態に用いる配送計画装置のハードウェアの一構成例を示す図である。配送計画装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0030】
メモリ102は、配送計画装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0031】
バス109に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0032】
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、配送計画装置100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【0033】
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
【0034】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0035】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0036】
機器接続インタフェース107は、配送計画装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0037】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他の配送計画装置または通信機器との間でデータの送受信を行う。
【0038】
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した配送計画装置10も、
図3に示した配送計画装置100と同様のハードウェアにより実現することができる。
【0039】
配送計画装置100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。配送計画装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、配送計画装置100に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また配送計画装置100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0040】
図4は、配送計画装置の機能を示すブロック図である。配送計画装置100は、移動時間取得部110、配送情報記憶部120、共有化グラフ作成部130、共有化グラフ記憶部140、最適解判断部150、配送計画記憶部160、および配送計画通知部170を有する。
【0041】
移動時間取得部110は、配送車31に搭載されている車載器31aから配送車31の位置情報を取得し、移動経路上の所定の区間の移動時間を計算する。移動時間取得部110は、計算した移動時間を、配送情報記憶部120に、移動時間データ124として格納する。
【0042】
配送情報記憶部120は、配送計画に用いる情報を記憶する。配送情報記憶部120には、道路グラフ121、配送物データ122、配送車データ123、および移動時間データ124が格納される。道路グラフ121は、配送経路上の道路を表すグラフである。配送物データ122は、配送物に関するデータであり、例えば配送物の識別情報、配送元の識別情報、配送先の識別情報などを含む。配送車データ123は、配送車に関するデータであり、配送車の識別情報、配送車の積み込み条件などを含む。配送車の積み込み条件は、例えば積載重量や荷台の容量である。移動時間データ124は、配送経路を複数の区間に区切ったときの、過去に各区間を走行した車両が該当区間を通過するのに要した移動時間である。なお配送情報記憶部120としては、例えばメモリ102またはHDD103の記憶領域の一部が使用される。
【0043】
なお、配送計画装置100は、配送情報記憶部120に格納された情報を、リアルタイムに更新することができる。例えば配送車31から取得した情報に基づいて、移動時間データ124をリアルタイムに更新できる。また配送物の配送時刻の変更内容などを、リアルタイムに変更できる。これにより、配送計画装置100は、最新の情報を用いて、配送計画を立案できる。
【0044】
共有化グラフ作成部130は、配送情報記憶部120に格納されている情報に基づいて、配送計画の算出に使用する共有化グラフを作成する。共有化グラフは、複数の配送経路において、通過時間の計算結果を共有できる区間を示す情報を、グラフで表したものである。共有化グラフ作成部130は、作成した共有化グラフを、共有化グラフ記憶部140に格納する。
【0045】
共有化グラフ記憶部140は、共有化グラフを記憶する。例えばメモリ102またはHDD103の記憶領域の一部が、共有化グラフ記憶部140として使用される。
最適解判断部150は、共有化グラフを用いて、最も効率的な配送計画(最適解)を判断する。最適解判断部150は、最適解である配送計画を配送計画記憶部160に格納する。
【0046】
配送計画記憶部160は、配送計画情報を記憶する。例えばメモリ102またはHDDの記憶領域の一部が、配送計画記憶部160として使用される。
配送計画通知部170は、立案された配送計画に従った配送車ごとの配送情報を、対応する配送車の車載器に送信する。配送情報には、配送する配送物の配送物データや、配送経路を示す配送経路データなどが含まれる。
【0047】
なお、
図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、
図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【0048】
次に、道路グラフ121について具体的に説明する。
図5は、道路グラフの一例を示す図である。道路グラフ121は、複数のノード51を複数の枝52で接続したものである。各ノードには「A」〜「Y」の識別子が付与されている。ノード51は、配送経路上の分岐点を示している。枝52は、分岐点間の区間を示している。ノード51には、例えば道路の交差点の位置(例えば緯度・経度)が設定されている。またノード51に対応づけて、そのノード51に対応する経路の分岐点近辺の配送元40または配送先41〜46の情報が設定されている。配送元40と配送先41〜46との情報には、例えば配送元または配送先の識別情報、住所、位置(緯度・経度)、居住者名などが含まれる。
【0049】
次に、移動時間データ124について具体的に説明する。
図6は、移動時間データの一例を示す図である。移動時間データ124は、例えば配送車、区間、走行方向、および移動時間の欄が設けられたデータテーブルに設定される。配送車の欄には、配送経路を走行した配送車の識別子が設定される。区間の欄には、走行した区間の識別子(区間ID)が設定される。なお1つの道路に対して、走行する方向ごとに別の区間IDが割り当てられる。走行方向の欄には、走行した方向(道路グラフ121の走行開始側のノードと走行終了側のノードとの組)が設定される。移動時間の欄には、区間を配送車が走行したときの移動時間が設定される。
【0050】
移動時間データ124は、配送計画の際に、配送経路上の区間ごとの走行時間の算出に利用される。
図7は、統計的手法を用いた走行時間の算出例を示す図である。
図7の例では、配送先41〜46への配送物を、2台の配送車32,33で配送するものとする。このとき移動時間データ124に基づいて、各区間における移動時間の確率分布を求めることができる。共有化グラフ作成部130は、移動時間の確率分布に基づいて、配送車両がその区間を通過するときの移動時間を、ランダムに求める。すなわち共有化グラフ作成部130は、移動時間データ124に基づいて得られた区間の移動時間の確率分布に沿った確率で、その区間の移動時間を示す数値をランダムに生成する。
【0051】
配送経路上の各区間の移動時間を合計すれば、その配送経路で配送した場合の配送時間となる。様々な配送パターンについて、配送時間を算出し、すべての配送車が配送を完了し、配送元に帰還するまでの最短時間(最適解)を求めることで、最適な配送パターンを決定できる。
【0052】
図8は、統計的な配送計画の配送計画問題の最適解の求め方の一例を示す図である。まず、配送先集合が、配送車32,33の台数(
図8の例では2台)で、分割パターンを変えて繰り返し分割される(ステップS1)。分割された配送先集合(配送先41〜43の集合と配送先44〜46の集合)それぞれについて、配送順の選択(ステップS2)が繰り返し行われる。そして選択された配送順ごとに、その配送順で配送するための配送経路の選択が繰り返し行われる(ステップS3)。さらに選択された配送経路ごとに、配送時間分布の計算が、例えばモンテカルロ法を用いたシミュレーション(モンテカルロシミュレーション)によって行われる(ステップS4)。
【0053】
図9は、モンテカルロシミュレーションの例を示す図である。モンテカルロシミュレーションでは、各区間(道路グラフ121の枝52)の移動時間の確率分布に従って、ランダムに移動時間が生成され、生成した移動時間が統計的に解析され、各配送経路の配送時間が算出される。これが同一の配送経路について、K回(Kは1以上の整数)繰り返される。このようにして繰り返し算出した配送時間によりヒストグラムが作成できる。ヒストグラムは、横軸に配送時間をとり、縦軸に度数(発生件数)をとったグラフであり、配送時間の度数分布が得られる度数分布から、配送時間ごとの発生確率を示す確率分布が得られる。なお繰り返し回数Kは、例えば数百から数万程度である。繰り返し回数Kを大きくすれば精度は上がるが、計算量も増える。
【0054】
配送時間の確率分布から得られる統計量が、その配送経路の配送時間となる。例えば配送時間の平均値をμ、標準偏差をσ、定数をk(kは実数)としたとき、「μ+kσ」で得られる値が、選択した配送経路の配送時間となる。また選択した配送経路について繰り返し計算した配送時間としてm個(mは1以上の整数)の値が得られたとき、小さい方からn番目(nは1以上m以下の整数)の値を、選択した配送経路の配送時間とすることもできる。例えば累積90%点を選択した配送経路の配送時間とするのであれば、m×0.9を四捨五入にして整数にした値をnとすれば、累積90%点を配送時間とすることができる。
【0055】
このようにして、モンテカルロシミュレーションを用いて、選択した配送経路についての配送時間が算出される。
図8の説明に戻り、配送経路ごとに計算した配送時間のうちの最短の配送時間が、分割して得られた配送先集合での最短配送時間となる(ステップS5)。この最短配送時間に対応する配送経路が、配送先集合に配送物を配送するために最も効率的な配送経路である。このような最短配送時間の計算が、分割して得られた配送先集合ごとに行われる。そして分割して得られた配送先集合ごとの最短配送時間のうちの最長の最短配送時間(全車配送完了時間)が求められる(ステップS6)。全車配送完了時間は、ステップS1で配送先集合を分割したときの分割パターンにおいて、分割された配送先集合のすべてに対して最も効率的な配送経路で配送したときに、配送が完了するまでの時間である。
【0056】
ステップS1において繰り返し分割した各分割パターンの全車配送完了時間のうち、最短の全車配送完了時間が得られる配送計画(配送先集合の分割パターン、分割された配送先集合の配送経路)が、最適解に決定される(ステップS7)。このようにして得られた最適解が、配送計画の結果となる。
【0057】
図8、
図9に示したような配送計画の立案方法では、様々な組み合せ(配送先の分割×配送順×配送経路)ごとにモンテカルロシミュレーションのサンプル数分だけ、配送時間計算を行うことになる。そのため、配送時間の計算の回数が膨大になり、最適化に時間がかかる。そこで第2の実施の形態では、配送時間計算では経路上のノードと枝の順序を入れ替えても計算結果に影響しないことを利用して、配送時間の計算処理の効率化を図る。すなわち共有化グラフ作成部130が、配送経路(道路グラフ121におけるノードと枝の並び)中のノードと枝の順番の入れ替えも許し、複数の配送経路における共通部分である部分経路のくくりだしを繰り返し行う。ただし共有化グラフ作成部130は、時間指定のある配送先に対応するノードがある場合は、経路上でそのノードを超えて順序を入れ替えないよう制限してくくりだしを行う。そして共有化グラフ作成部130が、くくり出した部分経路の配送時間の計算結果を共有化することを示す、共有化グラフを作成する。その共有化グラフを用いて、最適解判断部150が、配送経路選択と最短配送時間の計算とを行い、配送計画の最適解を求める。
【0058】
図10は、共通する部分経路のくくり出しの例を示す図である。
図10には、配送先41〜43を含む配送先集合に関して生成された2つの配送経路61,62について、共通する部分経路をくくり出す場合の例を示している。各配送経路61,62は、区間を表す区間IDの列で表される。各区間IDには、モンテカルロシミュレーションにおいて生成される多数のランダムの値を要素とするベクトルが関連づけられている。
【0059】
配送経路61は、区間ID列「abcdefghij」で表される。配送経路62は、区間ID列「klmbcdefghij」の列で表される。
この2つの配送経路61,62のうち、区間ID列「bcdefghij」で表される区間は共通である。この共通の区間の通過に要する移動時間は、1回だけ計算すればよい。そこで配送経路61を示す区間ID列「abcdefghij」と配送経路62を示す区間ID列「klmbcdefghij」とを統合し、区間ID列「bcdefghij」をくくり出した区間ID列「bcdefghij(a#klm)」を生成する。この区間ID列に示す「#」は、ベクトルの統計量(例えば「μ+kσ」)を算出する演算を表している。
【0060】
2つの配送経路61,62の配送時間をモンテカルロシミュレーションで算出する際に、くくりだした「bcdefghij」に対応する部分経路の通過に要する時間は、1回の計算で済ませることができる。
【0061】
図11は、共通する部分経路のくくり出しを行ったときのモンテカルロシミュレーションの計算例を示す図である。例えば
図10に示す1つ目の配送経路61における配送時間をモンテカルロシミュレーションで計算する場合、区間の移動時間確率分布に基づいて、各区間IDに対応するベクトルの要素値がランダムに生成される。例えば、区間ID「a」に対応するベクトルの要素値として「5,4,・・・,2」が生成されている。そして区間ID「a」に、生成したベクトル(5,4,・・・,2)が関連づけられる。同様に他の区間IDのベクトル値が生成される。各区間IDのベクトルのN番目(Nは1以上、K以下の整数)の要素の値の配列が、「モンテカルロサンプルN」となる。
【0062】
モンテカルロシミュレーションでは、モンテカルロサンプルごとに要素の値が合計され、そのモンテカルロサンプルの配送時間とされる。各モンテカルロサンプルの配送時間の平均や分散を求めることで配送時間分布が得られる。そして例えば統計量として算出した「μ+kσ」の値が、その配送経路の配送時間となる。
【0063】
図10に示したように部分経路のくくり出しが行われている場合、モンテカルロシミュレーションの計算過程で、くくり出された区間のみの移動時間を示すベクトル「α」が算出される。ベクトル「α」は、各モンテカルロサンプルにおいて、くくり出された部分経路の要素値を合計した値を要素とする。そしてベクトル「α」と区間ID「a」に対応するベクトルを用いたモンテカルロシミュレーションの計算を行うことで、1つ目の配送経路61の配送時間が算出できる。
【0064】
次に2つ目の配送経路62のモンテカルロシミュレーションを行う際に、くくり出された区間の各ベクトルに変えて、ベクトル「α」が用いられる。すなわち区間ID「k,l,m」に対応するベクトルとベクトル「α」とを用いたモンテカルロシミュレーションにより、配送経路62の配送時間が得られる。
【0065】
このように部分的に共有できる区間をくくり出すことで、複数の配送経路間で重複した区間の移動時間の計算を、1回の計算で済ませることができる。統計的配送計画の最適化では、各区間の移動時間を合計する処理が、モンテカルロシミュレーションのサンプルセット分繰り返される。そのため、重複した部分経路に関する移動時間の計算量が、(重複数−1)×サンプルセット数だけ削減される。
【0066】
なお
図10、
図11では、2つの配送経路61,62から共通する部分のくくり出しを行っているが、配送経路が多くなると、くくり出しが複雑になる。そこで第2の実施の形態では複雑なくくり出し関係が定義できるように、共有化グラフ作成部130により、くくり出しの関係が定義する共有化グラフが作成される。
【0067】
図12は、共有化グラフの例を示す図である。
図12の例では、
図10に示した配送経路61,62に加えて、配送経路63が示されている。配送経路63は、区間ID列「klmnopqrghst」で表される。
【0068】
配送経路61〜63から共通する部分経路のくくり出しを行うと、配送経路62と配送経路63との間で、区間ID列「klm」がくくり出される。配送経路数が多くなると共通する部分経路が複雑となり、
図10に示すように、区間ID列の一部を括弧でくくり出して表現するのは難しくなる。そこで共有化グラフ70が作成される。
【0069】
共有化グラフ70は、区間に対応する区間要素をノード71〜77で接続した有向非循環グラフ構造である。
図12では、共有化グラフ70の区間要素が、対応する区間の区間IDで表されている。ノード72〜77は、下位(図中左側)に接続された区間要素またはノードに対応するベクトルの合計(ベクトルの和)を示している。ノード72〜77において計算された結果は、新たなベクトルとしてメモリに保持される。最上位(ルート)のノード71は、下位に接続された区間要素のベクトルの要素値に基づく統計量(例えば「μ+kσ」)の計算結果を示している。
【0070】
共有化グラフ70の下位のノードから順に、ベクトルの和を計算していき、ルートのノード71で統計量を計算することで、複数の配送経路61〜63それぞれの統計量を算出できる。しかも、複数の配送経路で共通の区間については、ベクトルの合計の計算が1回で済み、処理が効率化される。
【0071】
図13は、共有化グラフの作成例を示す第1の図である。共有化グラフ作成部130は、初期状態として、ルートのノード71の下に、配送経路61〜63ごとのノード72〜74を接続した共有化グラフ70aを作成する。ノード72の下には、配送経路61のすべての区間に対応する区間要素が接続されている。ノード73の下には、配送経路62のすべての区間に対応する区間要素が接続されている。ノード74の下には、配送経路63のすべての区間に対応する区間要素が接続されている。
【0072】
次に共有化グラフ作成部130は、配送経路61と配送経路62との間の共通する区間の区間要素「bcdefghij」をくくり出すように、共有化グラフ70aを変形する。その結果、ノード72,73それぞれの下に接続されるノード75が生成される。ノード75の下には、区間要素「bcdefghij」が接続される。他方、ノード72,73の下に接続されていた区間要素「bcdefghij」は削除される。これにより、区間要素「bcdefghij」をくくり出した共有化グラフ70bが生成される。
【0073】
図14は、共有化グラフの作成例を示す第2の図である。共有化グラフ作成部130は、配送経路62と配送経路63との間の共通する区間に対応する区間要素「klm」をくくり出すように、共有化グラフ70bを変形する。その結果、ノード73,74それぞれの下に接続されるノード76が生成される。ノード76の下には、区間要素「klm」が接続される。他方、ノード73,74の下に接続されていた区間要素「klm」は削除される。これにより、「klm」をくくり出した共有化グラフ70cが生成される。
【0074】
図15は、共有化グラフの作成例を示す第3の図である。共有化グラフ作成部130は、配送経路61、配送経路62および配送経路63の間の共通する区間に対応する区間要素「gh」をくくり出すように、共有化グラフ70cを変形する。その結果、ノード74,75それぞれの下に接続されるノード77が生成される。ノード77の下には、区間要素「gh」が接続される。他方、ノード74,75の下に接続されていた区間要素「gh」は削除される。これにより、区間要素「gh」をくくり出した共有化グラフ70が生成される。このようにして生成された共有化グラフ70に基づいて、モンテカルロシミュレーションによる配送経路ごとの配送時間を効率的に計算できる。
【0075】
ところで、配送物を配送する際、配送時刻が指定されることがある。例えば配送時刻として、午後1時から2時までの時間帯が指定されている場合などである。配送物の配送時刻が指定されている場合、配送計画装置100は、配送元からその配送物の配送先(時間指定配送先)までの配送時間を計算し、指定時刻に間に合うような配送計画を立案することとなる。配送元から時間指定配送先までの移動時間は、例えば、配送元から時間指定配送先までの区間に対応する区間要素のベクトルを合計し、統計量を算出することで得られる。このような計算を、配送経路ごとの配送時間の計算過程で同時に行うことができれば、処理が効率化できる。
【0076】
ところが、共有化グラフ70により共通の部分経路のくくり出しを行うと、配送元から時間指定配送先までの移動時間を、配送経路ごとの配送時間の計算過程で同時に得ることができない場合がある。例えば、
図7に示した例で、配送先42へ配送する配送物について、配送時刻が指定されているものとする。
図12に示した配送経路61では、配送先42までの配送時間は、区間要素「abc」それぞれに対応するベクトルの合計を計算して、例えば「μ+kσ」のような統計量を算出することで得られる。ところが、
図12に示した共有化グラフ70を用いて配送時間を計算すると、配送経路61の配送時間の計算過程で、区間要素「abc」の合計値が得られない。このようなとき、時間指定配送先までの配送時間を別で計算したのでは、処理負荷が増えてしまう。
【0077】
そこで、共有化グラフ作成部130は、配送時刻の指定がある配送先までの配送時間に対応するノードは「don’t touch」マークを付け、くくり出しでノードが削除されないようにする。
【0078】
図16は、配送時刻の指定がある場合の共有化グラフの例を示す図である。
図16には、配送先42への配送物について配送時刻が指定されている場合の共有化グラフ80が示されている。共有化グラフ80は、ノード81〜89を有している。
【0079】
共有化グラフ80では、各配送経路61〜63における配送元40から配送先42までの区間については、その区間の移動時間に対応するノードが設けられる。例えば配送経路61における配送元40から配送先42までの経路上の区間に対応する区間要素「abc」のベクトルの合計を示すノード85が設けられる。同様に、配送経路62における配送元40から配送先42までの経路上の区間に対応する区間要素「klmbc」のベクトルの合計を示すノード86が設けられる。さらに配送経路63における配送元40から配送先42までの経路上の区間に対応する区間要素「klmno」のベクトルの合計を示すノード87が設けられる。これらのノード85,86,87には、「don’t touch」マーク(
図16では、太線の枠で示す)が付けられている。「don’t touch」マークが付けられた各ノード85,86,87は、共通する区間のくくり出し時に、削除されることはない。
【0080】
図17は、配送時刻の指定がある場合の共有化グラフの作成例を示す第1の図である。共有化グラフ作成部130は、初期状態として、ルートのノード81の下に、配送経路61〜63ごとのノード82〜84を接続した共有化グラフ80aを作成する。ノード82の下には、配送経路61のすべての区間に対応する区間要素が接続されている。ノード83の下には、配送経路62のすべての区間に対応する区間要素が接続されている。ノード84の下には、配送経路63のすべての区間に対応する区間要素が接続されている。
【0081】
次に共有化グラフ作成部130は、「don’t touch」マークを付与するノード85,86,87を追加した共有化グラフ80bを作成する。ノード82からは、ノード85により、区間要素「abc」がくくり出されている。ノード83からは、ノード86により、区間要素「klmbc」がくくり出されている。ノード84からは、ノード87により、区間要素「klmno」がくくり出されている。
【0082】
図18は、配送時刻の指定がある場合の共有化グラフの作成例を示す第2の図である。共有化グラフ作成部130は、配送経路61と配送経路62との間の共通する区間に対応する区間要素「bcdefghij」のうち、「don’t touch」ノード85でくくり出されていない区間要素「defghij」をくくり出すように、共有化グラフ80bを変形する。その結果、ノード82,83それぞれの下に接続されるノード88が生成される。ノード88の下には、区間要素「defghij」が接続される。他方、ノード82,83の下に接続されていた区間要素「defghij」は削除される。これにより、区間要素「defghij」をくくり出した共有化グラフ80cが生成される。
【0083】
図19は、配送時刻の指定がある場合の共有化グラフの作成例を示す第3の図である。共有化グラフ作成部130は、配送経路62と配送経路63との間の共通する区間に対応する区間要素「klm」をくくり出すように、共有化グラフ80cを変形する。その結果、ノード86,87それぞれの下に接続されるノード89が生成される。ノード89の下には、区間要素「klm」が接続される。他方、ノード86,87の下に接続されていた区間要素「klm」は削除される。これにより、「klm」をくくり出した共有化グラフ80dが生成される。
【0084】
図20は、配送時刻の指定がある場合の共有化グラフの作成例を示す第4の図である。共有化グラフ作成部130は、配送経路61、配送経路62および配送経路63の間の共通する区間に対応する区間要素「gh」をくくり出すように、共有化グラフ80dを変形する。その結果、ノード84,88それぞれの下に接続されるノード90が生成される。ノード90の下には、区間要素「gh」が接続される。他方、ノード84,88の下に接続されていた区間要素「gh」は削除される。これにより、「gh」をくくり出した共有化グラフ80が生成される。このようにして生成された共有化グラフ80に基づいてモンテカルロシミュレーションによる配送経路ごとの配送時間を計算される。その際、「don’t touch」マークが付けられた各ノード85,86,87における合計結果を用いて、各配送経路61〜63で配送したときに、指定された配送時刻に間に合うかどうかが検証できる。
【0085】
次に、
図8に示した配送先集合分割(ステップS1)により分割された配送先集合ごとの最適な配送計画の演算処理(ステップS2〜S5)について詳細に説明する。
図21は、配送計画立案の処理手順を示すフローチャートである。
【0086】
[ステップS101]共有化グラフ作成部130は、変数iに初期値「0」を設定する。
[ステップS102]共有化グラフ作成部130は、分割された配送先集合の配送車への割当のうち、未選択の割当があるか否かを判断する。未選択の割当があれば、処理がステップS103に進められる。未選択の割当がなければ、処理が終了する。
【0087】
[ステップS103]未選択の割当がある場合、共有化グラフ作成部130は、配送先集合の配送車への未選択の割り当ての1つを選択する。
[ステップS104]共有化グラフ作成部130は、割り当てた配送先集合に配送する配送物を、割り当て先の配送車に積み込み可能かどうかを判断する。例えば配送先集合の各配送先に配送する配送物の総量が、配送車の積載量以下であれば、配送可能と判断される。積み込み可能であれば、処理がステップS105に進められる。積み込み不可能であれば、処理がステップS102に進められる。
【0088】
[ステップS105]共有化グラフ作成部130は、配送車に割り当てられた配送先集合に含まれる配送先への配送順の候補のうち、未選択の配送順があるか否かを判断する。いずれかの配送車において未選択の配送順があれば、処理がステップS106に進められる。すべての配送車について、考え得るすべての配送順について選択済みの場合、処理がステップS102に進められる。
【0089】
[ステップS106]共有化グラフ作成部130は、各配送車について、配送先の未選択の配送順のうちの1つを選択する。
[ステップS107]共有化グラフ作成部130は、各配送車について、選択した配送順で配送先に配送するための配送経路を選択する。この際、変数iに1を加算する。
【0090】
[ステップS108]共有化グラフ作成部130は、変数iの値が、予め設定されている配送経路数M(Mは1以上の整数)より小さいか否かを判断する。変数iの値がMより小さければ、処理がステップS107に進められ、別の配送経路が追加で選択される。変数iの値がM以上であれば、処理がステップS109に進められる。
【0091】
[ステップS109]共有化グラフ作成部130は、配送車ごとに、その配送車に対して選択されたM個の配送経路の共有化グラフを作成する。共有化グラフ作成手順の詳細は後述する。作成された共有化グラフは、共有化グラフ記憶部140に格納される。
【0092】
[ステップS110]最適解判断部150は、共有化グラフに基づいて、配送経路ごとに、モンテカルロ法により「μ+kσ」を計算する。最適解判断部150は、計算結果を、その配送経路で配送したときの配送時間とする。この際、最適解判断部150は、配送時間が指定されている配送物の配送先までの配送時間も計算する。例えば最適解判断部150は、「don’t touch」マークが付与されたノードにおける計算結果として得られるベクトルの各要素の値の統計量を計算する。統計量は、例えば「μ+kσ」である。得られた統計量が、配送時間が指定されている配送物の配送先までの配送時間となる。
【0093】
[ステップS111]最適解判断部150は、配送車ごとに、ステップS110で求めた配送車ごとの配送時間が、その配送車に割り当てられた配送先集合への配送時間の最短時間よりも短いか否かを判断する。求めた配送時間が最短時間よりも短い配送車がある場合、処理がステップS112に進められる。すべての配送車について、求めた配送時間が最短時間以上であれば、処理がステップS114に進められる。
【0094】
[ステップS112]最適解判断部150は、求めた配送時間が最短時間よりも短い配送車が、配送時刻が指定された配送物を、指定時刻までに配達できるかどうかを判断する。例えば最適解判断部150は、現在の時刻に、該当する配送物の配送先までの配送時間や、配送物の積み込みに要する時間を加算した時刻が、指定時刻より前であれば、指定時刻までに配達できると判断する。指定時刻までに配達できる場合、処理がステップS113に進められる。指定時刻までに配達できない場合、処理がステップS114に進められる。
【0095】
[ステップS113]最適解判断部150は、配送車について求めた配送時間がその配送車の最短時間よりも短い場合、その配送車の最短時間と最適計画を更新する。最短時間は、直近のステップS110で求めた配送時間である。最適計画は、現在選択している配送順での現在選択している配送経路である。
【0096】
[ステップS114]共有化グラフ作成部130は、変数iに初期値「0」を設定し、処理をステップS105に進める。
次に、共有化グラフの作成処理について詳細に説明する。
【0097】
図22は、共有化グラフ作成処理の手順の一例を示す図である。
[ステップS121]共有化グラフ作成部130は、共有化のないグラフを、共有化グラフの初期状態として作成する。例えば
図17に示す共有化グラフ80aが作成される。
【0098】
[ステップS122]共有化グラフ作成部130は、配送元から、配送時刻が指定されている配送先までの区間をくくり出したノードを生成する。共有化グラフ作成部130は、生成したノードに「don’t touch」マークを付与する。これにより、例えば
図17に示す共有化グラフ80bが生成される。
【0099】
[ステップS123]共有化グラフ作成部130は、共有化グラフの複数のノードの下に、共通してくくり出し可能な区間の集合があるか否かを判断する。共有化グラフ作成部130は、該当する区間の集合がある場合、処理がステップS124に進められる。該当する区間の集合がなければ、共有化グラフ作成処理が終了する。
【0100】
[ステップS124]共有化グラフ作成部130は、くくり出し部分が最も多い(くくり出す区間の数が最大)となる区間の組を選択する。
[ステップS125]共有化グラフ作成部130は、共有化グラフにおいて、選択した区間の組を、1つのノードでくくり出す。例えば
図18に示した共有化グラフ80cのように、ノード88により、経路「defghij」がくくり出される。その後、処理がステップS123に進められ、くくり出しが繰り返される。その結果、例えば
図16に示すような共有化グラフ80が生成される。
【0101】
図21〜
図22に示した処理により、配送先集合の1つの分割パターンにおいて、各配送車に割り当てられた配送先に配送するための、各配送車の最適な配送経路(配送時間が最短の配送経路)が得られる。各配送車の最適な配送経路の配送時間のうちの最長の配送時間が、その分割パターンでの全車配送完了時間となる。配送先集合を様々な分割パターンで分割され、分割パターンごとの全車配送完了時間が得られる。そして全車配送完了時間が最短の分割パターンが特定される。そして特定された分割パターンにおける各配送車の最適な配送経路が、配送経路の最適解となる。配送経路の最適解は、最新の配送計画として配送計画記憶部160に格納される。
【0102】
図23は、配送計画記憶部内のデータ構造の一例を示す図である。配送計画記憶部160には、例えば配送計画管理テーブル161が格納される。配送計画管理テーブル161には、配送車に対応づけて、その配送車で配送する配送物、および配送経路が設定される。
【0103】
このような配送計画が、配送車、または配送車の運転手が所持する端末装置に送信されることで、各運転手は配送計画に従って効率的に配送物を配送することができる。
以上説明したように共有化グラフを用いて配送時間を計算することで、共有化した分だけ計算が削減され、統計的配送計画最適化を高速化できる。また、配送時間指定のある配送先に対応するノードに「don’t touch」マークを付けて、くくり出しでノードが消えないようにすることで、共有化グラフ上で配送時間指定が満たせるかのチェックが行える。したがって、配送時刻指定があっても、配送時刻が指定された配送物の配送先までの配送時間の計算を、共有化グラフを用いた全体の配送時間計算と同時に行うことができる。その結果、指定された配送時刻に間に合うかどうかのチェックのための余分な計算が少なくて済む。
【0104】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。