(57)【特許請求の範囲】
【請求項１】
コンピュータに、
道路の複数の区間のうち配送時に通過する区間を組み合わせて、配送物を配送先に配送するための複数の配送経路を作成し、
前記複数の配送経路のうちの２以上の配送経路で通過する共通区間を検出し、
前記複数の区間それぞれを過去に移動したときの所要時間を示す実移動時間に基づいて、前記共通区間を移動するのに要する移動時間を計算し、
前記移動時間と前記実移動時間とに基づいて、前記共通区間以外の区間の移動に要する時間を計算することで、前記複数の配送経路それぞれについての配送に要する配送時間を計算する、
処理を実行させる配送計画プログラム。
【請求項２】
前記移動時間および前記配送時間の計算では、前記複数の区間ごとの前記実移動時間の確率分布に基づくモンテカルロ法を用い、前記移動時間および前記配送時間を計算する請求項１記載の配送計画プログラム。
【請求項３】
前記コンピュータに、さらに、
前記共通区間に含まれる第１の区間を示す第１の区間要素が下位に接続された第１のノードが、前記共通区間を含む前記複数の配送経路それぞれに対応する第２のノードの下位に接続され、前記第２のノードそれぞれの下位には、対応する前記複数の配送経路における前記共通区間以外の第２の区間を示す第２の区間要素が接続された共有化グラフを作成する、
処理を実行させる請求項１または２記載の配送計画プログラム。
【請求項４】
前記配送時間の計算では、前記共有化グラフにおける下位のノードから順に計算対象のノードとし、前記計算対象のノードの下位に接続された前記第１の区間要素の前記移動時間、前記第２の区間要素に対応する区間の実移動時間、または前記計算対象のノードの下位に接続された他のノードでの移動に要する時間の計算結果に基づいて、前記計算対象のノードの下位に直接または間接的に接続された区間要素に対応する全区間の移動に要する合計時間を計算する、
請求項３記載の配送計画プログラム。
【請求項５】
前記共有化グラフの作成では、配送時刻が指定された時刻指定の配送物がある場合、前記複数の配送経路のうち、配送元から前記時刻指定の配送物の配送先までの経路に含まれる区間それぞれを示す第３の区間要素のみが、直接または間接的に下位に接続された第３のノードを、前記共有化グラフに含めることを特徴とする請求項３または４記載の配送計画プログラム。
【請求項６】
前記配送時間の計算では、前記第３のノードの下位に直接または間接的に接続された前記第３の区間要素に対応する区間の移動時間の合計を計算し、
前記コンピュータに、さらに、
前記第３の区間要素に対応する区間の移動時間の合計に基づいて、前記複数の配送経路それぞれについて、前記時刻指定の配送物を前記配送時刻までに配送できるかどうかを判断する、
処理を実行させる請求項５記載の配送計画プログラム。
【請求項７】
コンピュータが、
道路の複数の区間のうち配送時に通過する区間を組み合わせて、配送物を配送先に配送するための複数の配送経路を作成し、
前記複数の配送経路のうちの２以上の配送経路で通過する共通区間を検出し、
前記複数の区間それぞれを過去に移動したときの所要時間を示す実移動時間に基づいて、前記共通区間を移動するのに要する移動時間を計算し、
前記移動時間と前記実移動時間とに基づいて、前記共通区間以外の区間の移動に要する時間を計算することで、前記複数の配送経路それぞれについての配送に要する配送時間を計算する、
配送計画方法。
【請求項８】
配送物の配送先を示す配送物データと、道路の複数の区間それぞれを過去に移動したときの実移動時間を示す移動時間データとを記憶する記憶部と、
前記複数の区間のうち配送時に通過する区間を組み合わせて、配送物を配送先に配送するための複数の配送経路を作成し、前記複数の配送経路のうちの２以上の配送経路で通過する共通区間を検出し、前記複数の区間それぞれの前記実移動時間に基づいて、前記共通区間を移動するのに要する移動時間を計算し、前記移動時間と前記実移動時間とに基づいて、前記共通区間以外の区間の移動に要する時間を計算することで、前記複数の配送経路それぞれについての配送に要する配送時間を計算する演算部と、
を有する配送計画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配送計画プログラム、配送計画方法、および配送計画装置に関する。
【背景技術】
【０００２】
トラックなどで荷物を配送する場合、どのような経路で配送するのかにより、配送時間が大きく変わる。そこでコンピュータを用いて、効率的に配送できるような配送計画が立案される。以下、配送計画を立案するコンピュータを、配送計画装置とする。
【０００３】
配送計画に関する技術としては、例えば、移動時間の統計値を用いて、搬送対象物を移動させる場合に適した経路を決定するとともに、搬送経路の効率的な利用を図る搬送管理システムがある。また道路網を表すグラフを用いて、目標値に最も近い値を有する経路を識別するシステムも考えられている。さらに、予測した能力およびボトルネックに基づき製品経路プランを変更する目的で管理者がシナリオを試すことができるシミュレーションツールを含む製品配送システムも考えられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３０３０２４号公報
【特許文献２】特開２０１０−２０７７１号公報
【特許文献３】特表２００４−５０１０３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
現在、渋滞などの道路状況、ドライバの状態などをリアルタイムに収集することができる。道路状況に関するリアルタイムな情報に基づいて、配送計画を立案すれば、より適切な配送計画を立てることが可能となる。リアルタイムな道路状況を用いて配送計画を立案しても、その処理に時間がかかり過ぎると、配送計画が立案されたときにはすでに道路状況が変わってしまう可能性がある。そのため、配送計画の立案を、できるだけ短時間で行うことが重要となる。
【０００６】
しかし、最適な配送計画を立案するには、多数の配送経路について、その配送経路で配送に要する時間を計算し、配送経路ごとの計算結果を比較することとなり、処理に時間がかかる。できるだけ直近の情報に基づく最適な配送計画を立案するには、現在の配送計画立案の処理速度は十分ではない。
【０００７】
１つの側面では、本発明は、配送計画の立案に要する時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、コンピュータに以下の処理を実行させる配送計画プログラムが提供される。配送計画プログラムに基づいて、コンピュータは、まず、道路の複数の区間のうち配送時に通過する区間を組み合わせて、配送物を配送先に配送するための複数の配送経路を作成する。次にコンピュータは、複数の配送経路のうちの２以上の配送経路で通過する共通区間を検出する。次にコンピュータは、複数の区間それぞれを過去に移動したときの所要時間を示す実移動時間に基づいて、共通区間を移動するのに要する移動時間を計算する。そしてコンピュータは、移動時間と実移動時間とに基づいて、共通区間以外の区間の移動に要する時間を計算することで、複数の配送経路それぞれについての配送に要する配送時間を計算する。
【発明の効果】
【０００９】
１態様によれば、配送計画の立案に要する時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る配送計画装置の機能構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いる配送計画装置のハードウェアの一構成例を示す図である。
【図４】配送計画装置の機能を示すブロック図である。
【図５】道路グラフの一例を示す図である。
【図６】移動時間データの一例を示す図である。
【図７】統計的手法を用いた走行時間の算出例を示す図である。
【図８】統計的な配送計画の配送計画問題の最適解の求め方の一例を示す図である。
【図９】モンテカルロシミュレーションの例を示す図である。
【図１０】共通する部分経路のくくり出しの例を示す図である。
【図１１】共通する部分経路のくくり出しを行ったときのモンテカルロシミュレーションの計算例を示す図である。
【図１２】共有化グラフの例を示す図である。
【図１３】共有化グラフの作成例を示す第１の図である。
【図１４】共有化グラフの作成例を示す第２の図である。
【図１５】共有化グラフの作成例を示す第３の図である。
【図１６】配送時刻の指定がある場合の共有化グラフの例を示す図である。
【図１７】配送時刻の指定がある場合の共有化グラフの作成例を示す第１の図である。
【図１８】配送時刻の指定がある場合の共有化グラフの作成例を示す第２の図である。
【図１９】配送時刻の指定がある場合の共有化グラフの作成例を示す第３の図である。
【図２０】配送時刻の指定がある場合の共有化グラフの作成例を示す第４の図である。
【図２１】配送計画立案の処理手順を示すフローチャートである。
【図２２】共有化グラフ作成処理の手順の一例を示す図である。
【図２３】配送計画記憶部内のデータ構造の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る配送計画装置の機能構成例を示す図である。配送計画装置１０は、記憶部１１と演算部１２とを有している。
【００１２】
記憶部１１は、配送物データ１や移動時間データ２を記憶する。配送物データ１は、例えば所定の配送元から配送する配送物に関するデータである。配送物データ１には、例えば配送先を指定する情報が含まれる。また配送時刻が指定されている配送物の場合、配送物データ１内に、配送時刻が含まれる。移動時間データ２は、道路を区間に区切ったときに、過去に区間を車両が通過するのに要した時間（実移動時間）の履歴である。
【００１３】
演算部１２は、記憶部１１に格納されたデータを用いて、配送物を効率的に配送するための配送計画を立案する。演算部１２は、まず、道路の複数の区間のうち配送時に通過する区間を組み合わせて、配送物を配送先に配送するための複数の配送経路３，４を作成する。配送経路３のＩＤを「配送経路＃１」とし、配送経路４のＩＤを「配送経路＃２」とする。配送経路３は、区間ＩＤが「ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ，ｊ」の各区間を通過する経路である。また配送経路４は、区間ＩＤが「ｋ，ｌ，ｍ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ，ｊ」の各区間を通過する経路である。
【００１４】
次に演算部１２は、複数の配送経路３，４のうちの２以上の配送経路で通過する共通区間を検出する。図１の例では、配送経路３，４における、区間ＩＤ「ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ，ｊ」の区間が、共通区間である。このとき演算部１２は、複数の配送経路３，４間の共通区間をくくり出した共有化グラフ５で表すことができる。
【００１５】
共有化グラフ５は、複数のノード５ａ〜５ｄを枝（エッジ）で接続したものである。図１中、共有化グラフ５の右側を上位として、左側を下位とする。ノード間を接続する枝は、下位から上位に向かう矢印である。共有化グラフ５では、共通区間に含まれる区間を示す区間要素が下位に接続されたノード５ｄが、共通区間を含む配送経路３，４それぞれに対応するノード５ｂ，５ｃの下位に接続されている。また共有化グラフ５のノード５ｂ，５ｃの下位には、配送経路３，４における共通区間以外の区間を示す区間要素が接続されている。なお共有化グラフ５では、区間に対応する区間要素を、区間の区間ＩＤで表している。
【００１６】
演算部１２は、共通区間が検出されると、その区間を過去に移動したときの実移動時間に基づいて、共通区間を移動するのに要する移動時間を計算する。また演算部１２は、配送経路３，４それぞれについての配送に要する配送時間を計算する。この際、演算部１２は、複数の配送経路３，４における共通区間の移動に要する時間として移動時間を共用する。すなわち演算部１２は、移動時間と実移動時間とに基づいて、共通区間以外の区間の移動に要する時間を追加で計算することで、複数の配送経路３，４それぞれについての配送に要する配送時間を計算する。なお実移動時間は、記憶部１１内の移動時間データ２から得られる。配送時間の計算は、例えば複数の区間ごとの実移動時間の確率分布に基づくモンテカルロ法を用いて行うことができる。
【００１７】
共通区間が共有化グラフ５で表されている場合、演算部１２は、共有化グラフ５を用いて、配送時間の計算を行う。例えば演算部１２は、共有化グラフ５における下位のノードから順に計算対象のノードとする。そして演算部１２は、計算対象のノードの下位に接続された区間要素に対応する区間の実移動時間、および計算対象のノードの下位に接続された他のノードでの移動時間の計算結果に基づいて、合計の移動時間を計算する。この合計の移動時間は、計算対象のノードの下位に直接または間接的に接続された区間要素に対応する全区間の移動時間の合計である。
【００１８】
なお、モンテカルロ法を用いる場合、配送経路３，４ごとに求めた移動時間の合計値が、複数生成される。すなわちモンテカルロ法を用いる場合、演算部１２は、区間の実移動時間に基づいて、その区間の移動時間の確率分布を求める。そして確率分布に従った確率で、区間を移動する場合の移動時間を示す多数の値を、ランダムに生成する。演算部１２は、区間に対応づけて、生成された各値を要素とするベクトルを作成する。配送時間の計算では、ノード５ｂ〜５ｄそれぞれを計算対象ノードとしたとき、下位の区間要素に対応する区間のベクトル、および下位のノードの計算結果で得られたベクトルの足し算が行われる。演算部１２は、ノード５ａが計算対象ノードとなったとき、ノード５ｂ，５ｃそれぞれの計算で得られたベクトル内の要素の値の所定の統計量を計算する。得られた統計量が、配送経路３，４それぞれの配送時間となる。統計量は、例えば各要素の値の平均値、または平均値に標準偏差を加えた値などである。
【００１９】
配送経路３，４ごとの配送時間が得られると、演算部１２は、複数の配送経路３，４の複数の配送時間を比較して、効率的な配送経路を判定する。例えば演算部１２は、最も配送時間が短い配送経路を最適配送経路６として出力する。
【００２０】
このように、複数の配送経路が考えられるとき、各配送経路の配送時間の計算に際し、共通区間をくくり出して、その区間の移動時間を先に計算し、その計算結果を共有することで、複数の配送経路それぞれの配送時間を効率的に計算できるようになる。特にモンテカルロ法を用いた場合、高精度に配送時間を求めるには、各区間の移動時間を示すランダムな値を、数百から数万程度生成することになる。このような値の生成と、生成された値の合計とが、複数の移動経路の共通する区間について重複して行われると、処理量が増えてしまう。第１の実施の形態では、このような重複した計算が抑止され、処理の効率化が図れる。
【００２１】
しかも共通区間を共有化グラフ５で表現することにより、配送経路の数が多くても、配送経路間の区間の共有関係を正確に定義することができる。すなわち多数の配送経路間のすべての組み合わせにおける共有の区間を、漏れなく定義できる。その結果、配送時間の計算時の処理量の削減効果をより高めることができる。
【００２２】
なお配送物の中には、配送時刻あるいは配送時間帯が指定されているものがある。そのような配送物がある場合、各配送経路について、指定された配送時刻にその配送物を配送できるかどうの判断が行われる。そのために、配送元から、配送時刻が指定された配送物の配送先までの移動時間の計算が行われる。この移動時間の計算を、配送経路の配送時間の計算とは別個に行うと、計算量が増えてしまう。
【００２３】
そこで、共有化グラフ５の作成手順を工夫して、計算の効率化を図ることができる。例えば演算部１２は、共有化グラフ５の作成時に、複数の配送経路３，４のうち、配送元から時刻指定の配送物の配送先までの経路に含まれる区間それぞれを示す区間要素のみが、直接または間接的に下位に接続されたノードを、共有化グラフ５に含める。
【００２４】
このようなノードを共有化グラフ５に含めた場合、演算部１２は、配送時間の計算において、当該ノードの下位に直接または間接的に接続された区間要素に対応する区間の移動時間の合計を計算する。そして演算部１２は、その計算結果に基づいて、複数の配送経路それぞれについて、時刻指定の配送物を、指定された配送時刻までに配送できるかどうかを判断する。演算部１２は、指定された配送時刻までに配送できない配送経路については、最適配送経路６の候補から除外する。
【００２５】
このように配送時刻が指定された配送物の配送先までの移動時間を、配送経路全体の配送時間の計算過程で算出できるようにしたことで、別処理で移動時間の計算を実行せずに済み、処理が効率化できる。
【００２６】
なお、演算部１２は、例えば配送計画装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えば配送計画装置１０が有するメモリにより実現することができる。
【００２７】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に、第２の実施の形態について説明する。第２の実施の形態は、できるだけリアルタイムの道路状況に基づいて、複数の配送車を用いた配送計画を立案するものである。
【００２８】
図２は、第２の実施の形態のシステム構成例を示す図である。配送計画装置１００は、配送車３１〜３３による、配送元４０から配送先４１，４２への配送物の配送計画を立案する。配送計画装置１００は、配送計画の立案に際し、道路の交通状況に関する情報をリアルタイムに取得し、現時点での最適な配送計画を立案する。例えば配送車３１には、ＧＰＳ（Global Positioning System）を用いた測地機能を有する車載器３１ａが搭載されている。車載器３１ａは、無線通信機能を有しており、ネットワーク２０を介して配送計画装置１００と通信できる。配送計画装置１００は、車載器３１ａから、配送途中の配送車３１の位置を定期的に取得し、配送車３１が通過した経路の所要時間を算出する。他の配送車３２，３３にも同様の車載器が搭載され、多数の配送車３１〜３３が配送のために道路を移動することで、配送計画装置１００は、所定の区間の所要時間のデータを多数取得することができる。
【００２９】
図３は、第２の実施の形態に用いる配送計画装置のハードウェアの一構成例を示す図である。配送計画装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３０】
メモリ１０２は、配送計画装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３１】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３２】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、配送計画装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００３３】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３４】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３５】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３６】
機器接続インタフェース１０７は、配送計画装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３７】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他の配送計画装置または通信機器との間でデータの送受信を行う。
【００３８】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した配送計画装置１０も、図３に示した配送計画装置１００と同様のハードウェアにより実現することができる。
【００３９】
配送計画装置１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。配送計画装置１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、配送計画装置１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また配送計画装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４０】
図４は、配送計画装置の機能を示すブロック図である。配送計画装置１００は、移動時間取得部１１０、配送情報記憶部１２０、共有化グラフ作成部１３０、共有化グラフ記憶部１４０、最適解判断部１５０、配送計画記憶部１６０、および配送計画通知部１７０を有する。
【００４１】
移動時間取得部１１０は、配送車３１に搭載されている車載器３１ａから配送車３１の位置情報を取得し、移動経路上の所定の区間の移動時間を計算する。移動時間取得部１１０は、計算した移動時間を、配送情報記憶部１２０に、移動時間データ１２４として格納する。
【００４２】
配送情報記憶部１２０は、配送計画に用いる情報を記憶する。配送情報記憶部１２０には、道路グラフ１２１、配送物データ１２２、配送車データ１２３、および移動時間データ１２４が格納される。道路グラフ１２１は、配送経路上の道路を表すグラフである。配送物データ１２２は、配送物に関するデータであり、例えば配送物の識別情報、配送元の識別情報、配送先の識別情報などを含む。配送車データ１２３は、配送車に関するデータであり、配送車の識別情報、配送車の積み込み条件などを含む。配送車の積み込み条件は、例えば積載重量や荷台の容量である。移動時間データ１２４は、配送経路を複数の区間に区切ったときの、過去に各区間を走行した車両が該当区間を通過するのに要した移動時間である。なお配送情報記憶部１２０としては、例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が使用される。
【００４３】
なお、配送計画装置１００は、配送情報記憶部１２０に格納された情報を、リアルタイムに更新することができる。例えば配送車３１から取得した情報に基づいて、移動時間データ１２４をリアルタイムに更新できる。また配送物の配送時刻の変更内容などを、リアルタイムに変更できる。これにより、配送計画装置１００は、最新の情報を用いて、配送計画を立案できる。
【００４４】
共有化グラフ作成部１３０は、配送情報記憶部１２０に格納されている情報に基づいて、配送計画の算出に使用する共有化グラフを作成する。共有化グラフは、複数の配送経路において、通過時間の計算結果を共有できる区間を示す情報を、グラフで表したものである。共有化グラフ作成部１３０は、作成した共有化グラフを、共有化グラフ記憶部１４０に格納する。
【００４５】
共有化グラフ記憶部１４０は、共有化グラフを記憶する。例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が、共有化グラフ記憶部１４０として使用される。
最適解判断部１５０は、共有化グラフを用いて、最も効率的な配送計画（最適解）を判断する。最適解判断部１５０は、最適解である配送計画を配送計画記憶部１６０に格納する。
【００４６】
配送計画記憶部１６０は、配送計画情報を記憶する。例えばメモリ１０２またはＨＤＤの記憶領域の一部が、配送計画記憶部１６０として使用される。
配送計画通知部１７０は、立案された配送計画に従った配送車ごとの配送情報を、対応する配送車の車載器に送信する。配送情報には、配送する配送物の配送物データや、配送経路を示す配送経路データなどが含まれる。
【００４７】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００４８】
次に、道路グラフ１２１について具体的に説明する。
図５は、道路グラフの一例を示す図である。道路グラフ１２１は、複数のノード５１を複数の枝５２で接続したものである。各ノードには「Ａ」〜「Ｙ」の識別子が付与されている。ノード５１は、配送経路上の分岐点を示している。枝５２は、分岐点間の区間を示している。ノード５１には、例えば道路の交差点の位置（例えば緯度・経度）が設定されている。またノード５１に対応づけて、そのノード５１に対応する経路の分岐点近辺の配送元４０または配送先４１〜４６の情報が設定されている。配送元４０と配送先４１〜４６との情報には、例えば配送元または配送先の識別情報、住所、位置（緯度・経度）、居住者名などが含まれる。
【００４９】
次に、移動時間データ１２４について具体的に説明する。
図６は、移動時間データの一例を示す図である。移動時間データ１２４は、例えば配送車、区間、走行方向、および移動時間の欄が設けられたデータテーブルに設定される。配送車の欄には、配送経路を走行した配送車の識別子が設定される。区間の欄には、走行した区間の識別子（区間ＩＤ）が設定される。なお１つの道路に対して、走行する方向ごとに別の区間ＩＤが割り当てられる。走行方向の欄には、走行した方向（道路グラフ１２１の走行開始側のノードと走行終了側のノードとの組）が設定される。移動時間の欄には、区間を配送車が走行したときの移動時間が設定される。
【００５０】
移動時間データ１２４は、配送計画の際に、配送経路上の区間ごとの走行時間の算出に利用される。
図７は、統計的手法を用いた走行時間の算出例を示す図である。図７の例では、配送先４１〜４６への配送物を、２台の配送車３２，３３で配送するものとする。このとき移動時間データ１２４に基づいて、各区間における移動時間の確率分布を求めることができる。共有化グラフ作成部１３０は、移動時間の確率分布に基づいて、配送車両がその区間を通過するときの移動時間を、ランダムに求める。すなわち共有化グラフ作成部１３０は、移動時間データ１２４に基づいて得られた区間の移動時間の確率分布に沿った確率で、その区間の移動時間を示す数値をランダムに生成する。
【００５１】
配送経路上の各区間の移動時間を合計すれば、その配送経路で配送した場合の配送時間となる。様々な配送パターンについて、配送時間を算出し、すべての配送車が配送を完了し、配送元に帰還するまでの最短時間（最適解）を求めることで、最適な配送パターンを決定できる。
【００５２】
図８は、統計的な配送計画の配送計画問題の最適解の求め方の一例を示す図である。まず、配送先集合が、配送車３２，３３の台数（図８の例では２台）で、分割パターンを変えて繰り返し分割される（ステップＳ１）。分割された配送先集合（配送先４１〜４３の集合と配送先４４〜４６の集合）それぞれについて、配送順の選択（ステップＳ２）が繰り返し行われる。そして選択された配送順ごとに、その配送順で配送するための配送経路の選択が繰り返し行われる（ステップＳ３）。さらに選択された配送経路ごとに、配送時間分布の計算が、例えばモンテカルロ法を用いたシミュレーション（モンテカルロシミュレーション）によって行われる（ステップＳ４）。
【００５３】
図９は、モンテカルロシミュレーションの例を示す図である。モンテカルロシミュレーションでは、各区間（道路グラフ１２１の枝５２）の移動時間の確率分布に従って、ランダムに移動時間が生成され、生成した移動時間が統計的に解析され、各配送経路の配送時間が算出される。これが同一の配送経路について、Ｋ回（Ｋは１以上の整数）繰り返される。このようにして繰り返し算出した配送時間によりヒストグラムが作成できる。ヒストグラムは、横軸に配送時間をとり、縦軸に度数（発生件数）をとったグラフであり、配送時間の度数分布が得られる度数分布から、配送時間ごとの発生確率を示す確率分布が得られる。なお繰り返し回数Ｋは、例えば数百から数万程度である。繰り返し回数Ｋを大きくすれば精度は上がるが、計算量も増える。
【００５４】
配送時間の確率分布から得られる統計量が、その配送経路の配送時間となる。例えば配送時間の平均値をμ、標準偏差をσ、定数をｋ（ｋは実数）としたとき、「μ＋ｋσ」で得られる値が、選択した配送経路の配送時間となる。また選択した配送経路について繰り返し計算した配送時間としてｍ個（ｍは１以上の整数）の値が得られたとき、小さい方からｎ番目（ｎは１以上ｍ以下の整数）の値を、選択した配送経路の配送時間とすることもできる。例えば累積９０％点を選択した配送経路の配送時間とするのであれば、ｍ×０．９を四捨五入にして整数にした値をｎとすれば、累積９０％点を配送時間とすることができる。
【００５５】
このようにして、モンテカルロシミュレーションを用いて、選択した配送経路についての配送時間が算出される。
図８の説明に戻り、配送経路ごとに計算した配送時間のうちの最短の配送時間が、分割して得られた配送先集合での最短配送時間となる（ステップＳ５）。この最短配送時間に対応する配送経路が、配送先集合に配送物を配送するために最も効率的な配送経路である。このような最短配送時間の計算が、分割して得られた配送先集合ごとに行われる。そして分割して得られた配送先集合ごとの最短配送時間のうちの最長の最短配送時間（全車配送完了時間）が求められる（ステップＳ６）。全車配送完了時間は、ステップＳ１で配送先集合を分割したときの分割パターンにおいて、分割された配送先集合のすべてに対して最も効率的な配送経路で配送したときに、配送が完了するまでの時間である。
【００５６】
ステップＳ１において繰り返し分割した各分割パターンの全車配送完了時間のうち、最短の全車配送完了時間が得られる配送計画（配送先集合の分割パターン、分割された配送先集合の配送経路）が、最適解に決定される（ステップＳ７）。このようにして得られた最適解が、配送計画の結果となる。
【００５７】
図８、図９に示したような配送計画の立案方法では、様々な組み合せ（配送先の分割×配送順×配送経路）ごとにモンテカルロシミュレーションのサンプル数分だけ、配送時間計算を行うことになる。そのため、配送時間の計算の回数が膨大になり、最適化に時間がかかる。そこで第２の実施の形態では、配送時間計算では経路上のノードと枝の順序を入れ替えても計算結果に影響しないことを利用して、配送時間の計算処理の効率化を図る。すなわち共有化グラフ作成部１３０が、配送経路（道路グラフ１２１におけるノードと枝の並び）中のノードと枝の順番の入れ替えも許し、複数の配送経路における共通部分である部分経路のくくりだしを繰り返し行う。ただし共有化グラフ作成部１３０は、時間指定のある配送先に対応するノードがある場合は、経路上でそのノードを超えて順序を入れ替えないよう制限してくくりだしを行う。そして共有化グラフ作成部１３０が、くくり出した部分経路の配送時間の計算結果を共有化することを示す、共有化グラフを作成する。その共有化グラフを用いて、最適解判断部１５０が、配送経路選択と最短配送時間の計算とを行い、配送計画の最適解を求める。
【００５８】
図１０は、共通する部分経路のくくり出しの例を示す図である。図１０には、配送先４１〜４３を含む配送先集合に関して生成された２つの配送経路６１，６２について、共通する部分経路をくくり出す場合の例を示している。各配送経路６１，６２は、区間を表す区間ＩＤの列で表される。各区間ＩＤには、モンテカルロシミュレーションにおいて生成される多数のランダムの値を要素とするベクトルが関連づけられている。
【００５９】
配送経路６１は、区間ＩＤ列「ａｂｃｄｅｆｇｈｉｊ」で表される。配送経路６２は、区間ＩＤ列「ｋｌｍｂｃｄｅｆｇｈｉｊ」の列で表される。
この２つの配送経路６１，６２のうち、区間ＩＤ列「ｂｃｄｅｆｇｈｉｊ」で表される区間は共通である。この共通の区間の通過に要する移動時間は、１回だけ計算すればよい。そこで配送経路６１を示す区間ＩＤ列「ａｂｃｄｅｆｇｈｉｊ」と配送経路６２を示す区間ＩＤ列「ｋｌｍｂｃｄｅｆｇｈｉｊ」とを統合し、区間ＩＤ列「ｂｃｄｅｆｇｈｉｊ」をくくり出した区間ＩＤ列「ｂｃｄｅｆｇｈｉｊ（ａ＃ｋｌｍ）」を生成する。この区間ＩＤ列に示す「＃」は、ベクトルの統計量（例えば「μ＋ｋσ」）を算出する演算を表している。
【００６０】
２つの配送経路６１，６２の配送時間をモンテカルロシミュレーションで算出する際に、くくりだした「ｂｃｄｅｆｇｈｉｊ」に対応する部分経路の通過に要する時間は、１回の計算で済ませることができる。
【００６１】
図１１は、共通する部分経路のくくり出しを行ったときのモンテカルロシミュレーションの計算例を示す図である。例えば図１０に示す１つ目の配送経路６１における配送時間をモンテカルロシミュレーションで計算する場合、区間の移動時間確率分布に基づいて、各区間ＩＤに対応するベクトルの要素値がランダムに生成される。例えば、区間ＩＤ「ａ」に対応するベクトルの要素値として「５，４，・・・，２」が生成されている。そして区間ＩＤ「ａ」に、生成したベクトル（５，４，・・・，２）が関連づけられる。同様に他の区間ＩＤのベクトル値が生成される。各区間ＩＤのベクトルのＮ番目（Ｎは１以上、Ｋ以下の整数）の要素の値の配列が、「モンテカルロサンプルＮ」となる。
【００６２】
モンテカルロシミュレーションでは、モンテカルロサンプルごとに要素の値が合計され、そのモンテカルロサンプルの配送時間とされる。各モンテカルロサンプルの配送時間の平均や分散を求めることで配送時間分布が得られる。そして例えば統計量として算出した「μ＋ｋσ」の値が、その配送経路の配送時間となる。
【００６３】
図１０に示したように部分経路のくくり出しが行われている場合、モンテカルロシミュレーションの計算過程で、くくり出された区間のみの移動時間を示すベクトル「α」が算出される。ベクトル「α」は、各モンテカルロサンプルにおいて、くくり出された部分経路の要素値を合計した値を要素とする。そしてベクトル「α」と区間ＩＤ「ａ」に対応するベクトルを用いたモンテカルロシミュレーションの計算を行うことで、１つ目の配送経路６１の配送時間が算出できる。
【００６４】
次に２つ目の配送経路６２のモンテカルロシミュレーションを行う際に、くくり出された区間の各ベクトルに変えて、ベクトル「α」が用いられる。すなわち区間ＩＤ「ｋ，ｌ，ｍ」に対応するベクトルとベクトル「α」とを用いたモンテカルロシミュレーションにより、配送経路６２の配送時間が得られる。
【００６５】
このように部分的に共有できる区間をくくり出すことで、複数の配送経路間で重複した区間の移動時間の計算を、１回の計算で済ませることができる。統計的配送計画の最適化では、各区間の移動時間を合計する処理が、モンテカルロシミュレーションのサンプルセット分繰り返される。そのため、重複した部分経路に関する移動時間の計算量が、（重複数−１）×サンプルセット数だけ削減される。
【００６６】
なお図１０、図１１では、２つの配送経路６１，６２から共通する部分のくくり出しを行っているが、配送経路が多くなると、くくり出しが複雑になる。そこで第２の実施の形態では複雑なくくり出し関係が定義できるように、共有化グラフ作成部１３０により、くくり出しの関係が定義する共有化グラフが作成される。
【００６７】
図１２は、共有化グラフの例を示す図である。図１２の例では、図１０に示した配送経路６１，６２に加えて、配送経路６３が示されている。配送経路６３は、区間ＩＤ列「ｋｌｍｎｏｐｑｒｇｈｓｔ」で表される。
【００６８】
配送経路６１〜６３から共通する部分経路のくくり出しを行うと、配送経路６２と配送経路６３との間で、区間ＩＤ列「ｋｌｍ」がくくり出される。配送経路数が多くなると共通する部分経路が複雑となり、図１０に示すように、区間ＩＤ列の一部を括弧でくくり出して表現するのは難しくなる。そこで共有化グラフ７０が作成される。
【００６９】
共有化グラフ７０は、区間に対応する区間要素をノード７１〜７７で接続した有向非循環グラフ構造である。図１２では、共有化グラフ７０の区間要素が、対応する区間の区間ＩＤで表されている。ノード７２〜７７は、下位（図中左側）に接続された区間要素またはノードに対応するベクトルの合計（ベクトルの和）を示している。ノード７２〜７７において計算された結果は、新たなベクトルとしてメモリに保持される。最上位（ルート）のノード７１は、下位に接続された区間要素のベクトルの要素値に基づく統計量（例えば「μ＋ｋσ」）の計算結果を示している。
【００７０】
共有化グラフ７０の下位のノードから順に、ベクトルの和を計算していき、ルートのノード７１で統計量を計算することで、複数の配送経路６１〜６３それぞれの統計量を算出できる。しかも、複数の配送経路で共通の区間については、ベクトルの合計の計算が１回で済み、処理が効率化される。
【００７１】
図１３は、共有化グラフの作成例を示す第１の図である。共有化グラフ作成部１３０は、初期状態として、ルートのノード７１の下に、配送経路６１〜６３ごとのノード７２〜７４を接続した共有化グラフ７０ａを作成する。ノード７２の下には、配送経路６１のすべての区間に対応する区間要素が接続されている。ノード７３の下には、配送経路６２のすべての区間に対応する区間要素が接続されている。ノード７４の下には、配送経路６３のすべての区間に対応する区間要素が接続されている。
【００７２】
次に共有化グラフ作成部１３０は、配送経路６１と配送経路６２との間の共通する区間の区間要素「ｂｃｄｅｆｇｈｉｊ」をくくり出すように、共有化グラフ７０ａを変形する。その結果、ノード７２，７３それぞれの下に接続されるノード７５が生成される。ノード７５の下には、区間要素「ｂｃｄｅｆｇｈｉｊ」が接続される。他方、ノード７２，７３の下に接続されていた区間要素「ｂｃｄｅｆｇｈｉｊ」は削除される。これにより、区間要素「ｂｃｄｅｆｇｈｉｊ」をくくり出した共有化グラフ７０ｂが生成される。
【００７３】
図１４は、共有化グラフの作成例を示す第２の図である。共有化グラフ作成部１３０は、配送経路６２と配送経路６３との間の共通する区間に対応する区間要素「ｋｌｍ」をくくり出すように、共有化グラフ７０ｂを変形する。その結果、ノード７３，７４それぞれの下に接続されるノード７６が生成される。ノード７６の下には、区間要素「ｋｌｍ」が接続される。他方、ノード７３，７４の下に接続されていた区間要素「ｋｌｍ」は削除される。これにより、「ｋｌｍ」をくくり出した共有化グラフ７０ｃが生成される。
【００７４】
図１５は、共有化グラフの作成例を示す第３の図である。共有化グラフ作成部１３０は、配送経路６１、配送経路６２および配送経路６３の間の共通する区間に対応する区間要素「ｇｈ」をくくり出すように、共有化グラフ７０ｃを変形する。その結果、ノード７４，７５それぞれの下に接続されるノード７７が生成される。ノード７７の下には、区間要素「ｇｈ」が接続される。他方、ノード７４，７５の下に接続されていた区間要素「ｇｈ」は削除される。これにより、区間要素「ｇｈ」をくくり出した共有化グラフ７０が生成される。このようにして生成された共有化グラフ７０に基づいて、モンテカルロシミュレーションによる配送経路ごとの配送時間を効率的に計算できる。
【００７５】
ところで、配送物を配送する際、配送時刻が指定されることがある。例えば配送時刻として、午後１時から２時までの時間帯が指定されている場合などである。配送物の配送時刻が指定されている場合、配送計画装置１００は、配送元からその配送物の配送先（時間指定配送先）までの配送時間を計算し、指定時刻に間に合うような配送計画を立案することとなる。配送元から時間指定配送先までの移動時間は、例えば、配送元から時間指定配送先までの区間に対応する区間要素のベクトルを合計し、統計量を算出することで得られる。このような計算を、配送経路ごとの配送時間の計算過程で同時に行うことができれば、処理が効率化できる。
【００７６】
ところが、共有化グラフ７０により共通の部分経路のくくり出しを行うと、配送元から時間指定配送先までの移動時間を、配送経路ごとの配送時間の計算過程で同時に得ることができない場合がある。例えば、図７に示した例で、配送先４２へ配送する配送物について、配送時刻が指定されているものとする。図１２に示した配送経路６１では、配送先４２までの配送時間は、区間要素「ａｂｃ」それぞれに対応するベクトルの合計を計算して、例えば「μ＋ｋσ」のような統計量を算出することで得られる。ところが、図１２に示した共有化グラフ７０を用いて配送時間を計算すると、配送経路６１の配送時間の計算過程で、区間要素「ａｂｃ」の合計値が得られない。このようなとき、時間指定配送先までの配送時間を別で計算したのでは、処理負荷が増えてしまう。
【００７７】
そこで、共有化グラフ作成部１３０は、配送時刻の指定がある配送先までの配送時間に対応するノードは「don’t touch」マークを付け、くくり出しでノードが削除されないようにする。
【００７８】
図１６は、配送時刻の指定がある場合の共有化グラフの例を示す図である。図１６には、配送先４２への配送物について配送時刻が指定されている場合の共有化グラフ８０が示されている。共有化グラフ８０は、ノード８１〜８９を有している。
【００７９】
共有化グラフ８０では、各配送経路６１〜６３における配送元４０から配送先４２までの区間については、その区間の移動時間に対応するノードが設けられる。例えば配送経路６１における配送元４０から配送先４２までの経路上の区間に対応する区間要素「ａｂｃ」のベクトルの合計を示すノード８５が設けられる。同様に、配送経路６２における配送元４０から配送先４２までの経路上の区間に対応する区間要素「ｋｌｍｂｃ」のベクトルの合計を示すノード８６が設けられる。さらに配送経路６３における配送元４０から配送先４２までの経路上の区間に対応する区間要素「ｋｌｍｎｏ」のベクトルの合計を示すノード８７が設けられる。これらのノード８５，８６，８７には、「don’t touch」マーク（図１６では、太線の枠で示す）が付けられている。「don’t touch」マークが付けられた各ノード８５，８６，８７は、共通する区間のくくり出し時に、削除されることはない。
【００８０】
図１７は、配送時刻の指定がある場合の共有化グラフの作成例を示す第１の図である。共有化グラフ作成部１３０は、初期状態として、ルートのノード８１の下に、配送経路６１〜６３ごとのノード８２〜８４を接続した共有化グラフ８０ａを作成する。ノード８２の下には、配送経路６１のすべての区間に対応する区間要素が接続されている。ノード８３の下には、配送経路６２のすべての区間に対応する区間要素が接続されている。ノード８４の下には、配送経路６３のすべての区間に対応する区間要素が接続されている。
【００８１】
次に共有化グラフ作成部１３０は、「don’t touch」マークを付与するノード８５，８６，８７を追加した共有化グラフ８０ｂを作成する。ノード８２からは、ノード８５により、区間要素「ａｂｃ」がくくり出されている。ノード８３からは、ノード８６により、区間要素「ｋｌｍｂｃ」がくくり出されている。ノード８４からは、ノード８７により、区間要素「ｋｌｍｎｏ」がくくり出されている。
【００８２】
図１８は、配送時刻の指定がある場合の共有化グラフの作成例を示す第２の図である。共有化グラフ作成部１３０は、配送経路６１と配送経路６２との間の共通する区間に対応する区間要素「ｂｃｄｅｆｇｈｉｊ」のうち、「don’t touch」ノード８５でくくり出されていない区間要素「ｄｅｆｇｈｉｊ」をくくり出すように、共有化グラフ８０ｂを変形する。その結果、ノード８２，８３それぞれの下に接続されるノード８８が生成される。ノード８８の下には、区間要素「ｄｅｆｇｈｉｊ」が接続される。他方、ノード８２，８３の下に接続されていた区間要素「ｄｅｆｇｈｉｊ」は削除される。これにより、区間要素「ｄｅｆｇｈｉｊ」をくくり出した共有化グラフ８０ｃが生成される。
【００８３】
図１９は、配送時刻の指定がある場合の共有化グラフの作成例を示す第３の図である。共有化グラフ作成部１３０は、配送経路６２と配送経路６３との間の共通する区間に対応する区間要素「ｋｌｍ」をくくり出すように、共有化グラフ８０ｃを変形する。その結果、ノード８６，８７それぞれの下に接続されるノード８９が生成される。ノード８９の下には、区間要素「ｋｌｍ」が接続される。他方、ノード８６，８７の下に接続されていた区間要素「ｋｌｍ」は削除される。これにより、「ｋｌｍ」をくくり出した共有化グラフ８０ｄが生成される。
【００８４】
図２０は、配送時刻の指定がある場合の共有化グラフの作成例を示す第４の図である。共有化グラフ作成部１３０は、配送経路６１、配送経路６２および配送経路６３の間の共通する区間に対応する区間要素「ｇｈ」をくくり出すように、共有化グラフ８０ｄを変形する。その結果、ノード８４，８８それぞれの下に接続されるノード９０が生成される。ノード９０の下には、区間要素「ｇｈ」が接続される。他方、ノード８４，８８の下に接続されていた区間要素「ｇｈ」は削除される。これにより、「ｇｈ」をくくり出した共有化グラフ８０が生成される。このようにして生成された共有化グラフ８０に基づいてモンテカルロシミュレーションによる配送経路ごとの配送時間を計算される。その際、「don’t touch」マークが付けられた各ノード８５，８６，８７における合計結果を用いて、各配送経路６１〜６３で配送したときに、指定された配送時刻に間に合うかどうかが検証できる。
【００８５】
次に、図８に示した配送先集合分割（ステップＳ１）により分割された配送先集合ごとの最適な配送計画の演算処理（ステップＳ２〜Ｓ５）について詳細に説明する。
図２１は、配送計画立案の処理手順を示すフローチャートである。
【００８６】
［ステップＳ１０１］共有化グラフ作成部１３０は、変数ｉに初期値「０」を設定する。
［ステップＳ１０２］共有化グラフ作成部１３０は、分割された配送先集合の配送車への割当のうち、未選択の割当があるか否かを判断する。未選択の割当があれば、処理がステップＳ１０３に進められる。未選択の割当がなければ、処理が終了する。
【００８７】
［ステップＳ１０３］未選択の割当がある場合、共有化グラフ作成部１３０は、配送先集合の配送車への未選択の割り当ての１つを選択する。
［ステップＳ１０４］共有化グラフ作成部１３０は、割り当てた配送先集合に配送する配送物を、割り当て先の配送車に積み込み可能かどうかを判断する。例えば配送先集合の各配送先に配送する配送物の総量が、配送車の積載量以下であれば、配送可能と判断される。積み込み可能であれば、処理がステップＳ１０５に進められる。積み込み不可能であれば、処理がステップＳ１０２に進められる。
【００８８】
［ステップＳ１０５］共有化グラフ作成部１３０は、配送車に割り当てられた配送先集合に含まれる配送先への配送順の候補のうち、未選択の配送順があるか否かを判断する。いずれかの配送車において未選択の配送順があれば、処理がステップＳ１０６に進められる。すべての配送車について、考え得るすべての配送順について選択済みの場合、処理がステップＳ１０２に進められる。
【００８９】
［ステップＳ１０６］共有化グラフ作成部１３０は、各配送車について、配送先の未選択の配送順のうちの１つを選択する。
［ステップＳ１０７］共有化グラフ作成部１３０は、各配送車について、選択した配送順で配送先に配送するための配送経路を選択する。この際、変数ｉに１を加算する。
【００９０】
［ステップＳ１０８］共有化グラフ作成部１３０は、変数ｉの値が、予め設定されている配送経路数Ｍ（Ｍは１以上の整数）より小さいか否かを判断する。変数ｉの値がＭより小さければ、処理がステップＳ１０７に進められ、別の配送経路が追加で選択される。変数ｉの値がＭ以上であれば、処理がステップＳ１０９に進められる。
【００９１】
［ステップＳ１０９］共有化グラフ作成部１３０は、配送車ごとに、その配送車に対して選択されたＭ個の配送経路の共有化グラフを作成する。共有化グラフ作成手順の詳細は後述する。作成された共有化グラフは、共有化グラフ記憶部１４０に格納される。
【００９２】
［ステップＳ１１０］最適解判断部１５０は、共有化グラフに基づいて、配送経路ごとに、モンテカルロ法により「μ＋ｋσ」を計算する。最適解判断部１５０は、計算結果を、その配送経路で配送したときの配送時間とする。この際、最適解判断部１５０は、配送時間が指定されている配送物の配送先までの配送時間も計算する。例えば最適解判断部１５０は、「don’t touch」マークが付与されたノードにおける計算結果として得られるベクトルの各要素の値の統計量を計算する。統計量は、例えば「μ＋ｋσ」である。得られた統計量が、配送時間が指定されている配送物の配送先までの配送時間となる。
【００９３】
［ステップＳ１１１］最適解判断部１５０は、配送車ごとに、ステップＳ１１０で求めた配送車ごとの配送時間が、その配送車に割り当てられた配送先集合への配送時間の最短時間よりも短いか否かを判断する。求めた配送時間が最短時間よりも短い配送車がある場合、処理がステップＳ１１２に進められる。すべての配送車について、求めた配送時間が最短時間以上であれば、処理がステップＳ１１４に進められる。
【００９４】
［ステップＳ１１２］最適解判断部１５０は、求めた配送時間が最短時間よりも短い配送車が、配送時刻が指定された配送物を、指定時刻までに配達できるかどうかを判断する。例えば最適解判断部１５０は、現在の時刻に、該当する配送物の配送先までの配送時間や、配送物の積み込みに要する時間を加算した時刻が、指定時刻より前であれば、指定時刻までに配達できると判断する。指定時刻までに配達できる場合、処理がステップＳ１１３に進められる。指定時刻までに配達できない場合、処理がステップＳ１１４に進められる。
【００９５】
［ステップＳ１１３］最適解判断部１５０は、配送車について求めた配送時間がその配送車の最短時間よりも短い場合、その配送車の最短時間と最適計画を更新する。最短時間は、直近のステップＳ１１０で求めた配送時間である。最適計画は、現在選択している配送順での現在選択している配送経路である。
【００９６】
［ステップＳ１１４］共有化グラフ作成部１３０は、変数ｉに初期値「０」を設定し、処理をステップＳ１０５に進める。
次に、共有化グラフの作成処理について詳細に説明する。
【００９７】
図２２は、共有化グラフ作成処理の手順の一例を示す図である。
［ステップＳ１２１］共有化グラフ作成部１３０は、共有化のないグラフを、共有化グラフの初期状態として作成する。例えば図１７に示す共有化グラフ８０ａが作成される。
【００９８】
［ステップＳ１２２］共有化グラフ作成部１３０は、配送元から、配送時刻が指定されている配送先までの区間をくくり出したノードを生成する。共有化グラフ作成部１３０は、生成したノードに「don’t touch」マークを付与する。これにより、例えば図１７に示す共有化グラフ８０ｂが生成される。
【００９９】
［ステップＳ１２３］共有化グラフ作成部１３０は、共有化グラフの複数のノードの下に、共通してくくり出し可能な区間の集合があるか否かを判断する。共有化グラフ作成部１３０は、該当する区間の集合がある場合、処理がステップＳ１２４に進められる。該当する区間の集合がなければ、共有化グラフ作成処理が終了する。
【０１００】
［ステップＳ１２４］共有化グラフ作成部１３０は、くくり出し部分が最も多い（くくり出す区間の数が最大）となる区間の組を選択する。
［ステップＳ１２５］共有化グラフ作成部１３０は、共有化グラフにおいて、選択した区間の組を、１つのノードでくくり出す。例えば図１８に示した共有化グラフ８０ｃのように、ノード８８により、経路「ｄｅｆｇｈｉｊ」がくくり出される。その後、処理がステップＳ１２３に進められ、くくり出しが繰り返される。その結果、例えば図１６に示すような共有化グラフ８０が生成される。
【０１０１】
図２１〜図２２に示した処理により、配送先集合の１つの分割パターンにおいて、各配送車に割り当てられた配送先に配送するための、各配送車の最適な配送経路（配送時間が最短の配送経路）が得られる。各配送車の最適な配送経路の配送時間のうちの最長の配送時間が、その分割パターンでの全車配送完了時間となる。配送先集合を様々な分割パターンで分割され、分割パターンごとの全車配送完了時間が得られる。そして全車配送完了時間が最短の分割パターンが特定される。そして特定された分割パターンにおける各配送車の最適な配送経路が、配送経路の最適解となる。配送経路の最適解は、最新の配送計画として配送計画記憶部１６０に格納される。
【０１０２】
図２３は、配送計画記憶部内のデータ構造の一例を示す図である。配送計画記憶部１６０には、例えば配送計画管理テーブル１６１が格納される。配送計画管理テーブル１６１には、配送車に対応づけて、その配送車で配送する配送物、および配送経路が設定される。
【０１０３】
このような配送計画が、配送車、または配送車の運転手が所持する端末装置に送信されることで、各運転手は配送計画に従って効率的に配送物を配送することができる。
以上説明したように共有化グラフを用いて配送時間を計算することで、共有化した分だけ計算が削減され、統計的配送計画最適化を高速化できる。また、配送時間指定のある配送先に対応するノードに「don’t touch」マークを付けて、くくり出しでノードが消えないようにすることで、共有化グラフ上で配送時間指定が満たせるかのチェックが行える。したがって、配送時刻指定があっても、配送時刻が指定された配送物の配送先までの配送時間の計算を、共有化グラフを用いた全体の配送時間計算と同時に行うことができる。その結果、指定された配送時刻に間に合うかどうかのチェックのための余分な計算が少なくて済む。
【０１０４】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１０５】
１  配送物データ
２  移動時間データ
３，４  配送経路
５  共有化グラフ
５ａ〜５ｄ  ノード
６  最適配送経路
１０  配送計画装置
１１  記憶部
１２  演算部
【図１】
0006439400.tif 000002
【図２】
0006439400.tif 000003
【図３】
0006439400.tif 000004
【図４】
0006439400.tif 000005
【図５】
0006439400.tif 000006
【図６】
0006439400.tif 000007
【図７】
0006439400.tif 000008
【図８】
0006439400.tif 000009
【図９】
0006439400.tif 000010
【図１０】
0006439400.tif 000011
【図１１】
0006439400.tif 000012
【図１２】
0006439400.tif 000013
【図１３】
0006439400.tif 000014
【図１４】
0006439400.tif 000015
【図１５】
0006439400.tif 000016
【図１６】
0006439400.tif 000017
【図１７】
0006439400.tif 000018
【図１８】
0006439400.tif 000019
【図１９】
0006439400.tif 000020
【図２０】
0006439400.tif 000021
【図２１】
0006439400.tif 000022
【図２２】
0006439400.tif 000023
【図２３】
0006439400.tif 000024