(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-25
(45)【発行日】2023-10-03
(54)【発明の名称】情報処理装置、情報処理方法および情報処理プログラム
(51)【国際特許分類】
G06Q 10/047 20230101AFI20230926BHJP
【FI】
G06Q10/047
(21)【出願番号】P 2020069720
(22)【出願日】2020-04-08
【審査請求日】2023-01-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】伊東 佑人
【審査官】鈴木 和樹
(56)【参考文献】
【文献】特許第6272596(JP,B1)
【文献】特開2018-73213(JP,A)
【文献】米国特許出願公開第2007/0282618(US,A1)
【文献】米国特許出願公開第2013/0159206(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 - 99/00
B65G 61/00
(57)【特許請求の範囲】
【請求項1】
複数の移動体を用いて、複数のノードに荷物を運搬する、または前記複数のノードから荷物を運搬する際の経路最適化問題の求解において、
前記複数のノードに含まれる各ノードを特定するノード情報と、前記複数のノードの各々の需要量を示す需要量情報と、前記複数の移動体の各々の最大積載量を示す移動体情報と、を保持する記憶部と、
前記複数の移動体の各々について、前記複数のノードのうち前記荷物を運搬するノード群であって、前記最大積載量の条件を満たすノード群を特定し、前記ノード群に含まれる各ノードの運搬順序を規定する複数の経路を生成する生成部と、
前記生成部により生成された前記複数の経路に基づいて、前記経路最適化問題の求解処理を実行する演算部と、
を有し、
前記生成部は、前記ノード情報と前記需要量情報と前記移動体情報とに基づき、
前記複数のノードから、前記複数の移動体のうちの第N番目の移動体によって前記荷物が運搬される第1ノード群を特定する特定処理と、
前記第1ノード群に含まれる各ノードについて、前記第N番目の移動体によって前記荷物が運搬された後の残需要を示す残需要情報を生成する情報生成処理と、
前記残需要情報に基づき、前記複数のノードのうち前記残需要のないノードを前記複数のノードから除外することによって前記ノード情報を更新する情報更新処理と、
を実行し、
前記複数の移動体の各々について、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行い、
前記情報更新処理によって更新された前記ノード情報に基づき、前記残需要のないノードの数が所定値以上であるかを判定し、
前記残需要のないノードの数が前記所定値以上であると判定された場合、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行う処理を停止することを特徴とする情報処理装置。
【請求項2】
前記演算部は、前記生成部により生成された前記複数の経路に関する情報をイジングマシンに入力して、前記複数の移動体に関するコストが最小化する最適経路を算出することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記生成部は、各経路のうち前記数が最小である以外の経路、または、前記各経路のうち前記数が少ない経路から選択した所定数以外の経路を除外して、前記複数の経路を生成することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記生成部により生成された前記複数の経路を対象とした、各経路を実行したときの前記コストを計算する第1項と、各経路内の各ノードの需要量と各ノードへの供給量とに基づく第2項とを有する目的関数を生成する目的関数生成部を有し、
前記演算部は、前記目的関数を前記イジングマシンに入力して、前記コストが最小化する前記最適経路を算出することを特徴とする請求項2に記載の情報処理装置。
【請求項5】
コンピュータが、
複数の移動体を用いて、複数のノードに荷物を運搬する、または前記複数のノードから荷物を運搬する際の経路最適化問題の求解において、
前記複数のノードに含まれる各ノードを特定するノード情報と、前記複数のノードの各々の需要量を示す需要量情報と、前記複数の移動体の各々の最大積載量を示す移動体情報と、を保持する記憶部を保持し、
前記複数の移動体の各々について、前記複数のノードのうち前記荷物を運搬するノード群であって、前記最大積載量の条件を満たすノード群を特定し、前記ノード群に含まれる各ノードの運搬順序を規定する複数の経路を生成し、
生成された前記複数の経路に基づいて、前記経路最適化問題の求解処理を実行する、
処理を実行し、
前記生成する処理は、前記ノード情報と前記需要量情報と前記移動体情報とに基づき、
前記複数のノードから、前記複数の移動体のうちの第N番目の移動体によって前記荷物が運搬される第1ノード群を特定する特定処理と、
前記第1ノード群に含まれる各ノードについて、前記第N番目の移動体によって前記荷物が運搬された後の残需要を示す残需要情報を生成する情報生成処理と、
前記残需要情報に基づき、前記複数のノードのうち前記残需要のないノードを前記複数のノードから除外することによって前記ノード情報を更新する情報更新処理と、
を実行し、
前記複数の移動体の各々について、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行い、
前記情報更新処理によって更新された前記ノード情報に基づき、前記残需要のないノードの数が所定値以上であるかを判定し、
前記残需要のないノードの数が前記所定値以上であると判定された場合、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行う処理を停止することを特徴とする情報処理方法。
【請求項6】
コンピュータに、
複数の移動体を用いて、複数のノードに荷物を運搬する、または前記複数のノードから荷物を運搬する際の経路最適化問題の求解において、
前記複数のノードに含まれる各ノードを特定するノード情報と、前記複数のノードの各々の需要量を示す需要量情報と、前記複数の移動体の各々の最大積載量を示す移動体情報と、を保持する記憶部を保持し、
前記複数の移動体の各々について、前記複数のノードのうち前記荷物を運搬するノード群であって、前記最大積載量の条件を満たすノード群を特定し、前記ノード群に含まれる各ノードの運搬順序を規定する複数の経路を生成し、
生成された前記複数の経路に基づいて、前記経路最適化問題の求解処理を実行する、
処理を実行させ、
前記生成する処理は、前記ノード情報と前記需要量情報と前記移動体情報とに基づき、
前記複数のノードから、前記複数の移動体のうちの第N番目の移動体によって前記荷物が運搬される第1ノード群を特定する特定処理と、
前記第1ノード群に含まれる各ノードについて、前記第N番目の移動体によって前記荷物が運搬された後の残需要を示す残需要情報を生成する情報生成処理と、
前記残需要情報に基づき、前記複数のノードのうち前記残需要のないノードを前記複数のノードから除外することによって前記ノード情報を更新する情報更新処理と、
を実行し、
前記複数の移動体の各々について、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行い、
前記情報更新処理によって更新された前記ノード情報に基づき、前記残需要のないノードの数が所定値以上であるかを判定し、
前記残需要のないノードの数が前記所定値以上であると判定された場合、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行う処理を停止することを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【0002】
組み合わせ最適化問題の1つとして、経路最適化問題と呼ばれる問題がある。この問題は、配送計画問題(VRP:Vehicle Routing Problem)と呼ばれることもある。具体的には、VRPでは、デポと呼ばれる拠点となる施設と、ノードと呼ばれる支点である他の複数の施設が定義される。そして、複数の移動体、例えば運搬車が、デポからノードに荷物を運搬し、再びデポに戻る経路、または、デポから出発した複数の運搬車が、ノードからデポに荷物を運搬する経路のうち、運搬に要するコストを最小化する経路を求める。
【0003】
ここで、VRPの所与のデータとして、ノードの数、ノード間を運搬車で移動する所要時間、デポから各ノードに、または各ノードからデポに運搬される必要のある荷物量(以下では「需要)と記載する場合がある)、運搬車が各ノードを訪れられる時間帯(以下では「time window」と記載する場合がある)、各運搬車の最大積載量、各運搬車をある時間運行させたときにかかるコストなどがある。
【0004】
VRPは、上記データが与えられた時に、運搬車のコストの和を最小化するように、各運搬車の経路を求める問題である。なお、各運搬車の経路とは、その運搬車がどのノードをどの時刻に訪れるか、訪れた各ノードに、または各ノードから運搬する荷物の量(以下では「供給」と記載する場合がある)を含む。また、運搬車のコストとは、配送にかかる時間や、配送にかかるガソリン代や各種費用などの配送料を含む。
【0005】
図15は、運搬車の経路を説明するための図である。
図15に示す例では、デポ10と、ノードnd1~12が含まれる。
図15の説明では、運搬車がノードを訪れた時間、供給の図示を省略する。たとえば、運搬車1の経路を経路Ro1とし、運搬車2の経路を経路Ro2とし、運搬車3の経路を経路Ro3とする。経路Ro1は、運搬車1が、デポ10、nd1~4を訪れる経路である。経路Ro2は、運搬車2が、デポ10、nd5~8を訪れる経路である。経路Ro3は、運搬車3が、デポ10、nd9~11を訪れる経路である。
【0006】
ここで、VRPを解く場合、経路生成をした後、生成された経路から最適な経路を選択することが行われる。具体的には、各運搬車の経路として、問題の条件(time windowや最大積載量等の条件)を満たす経路を、可能な限り多く生成する。次に、生成された経路の中から、全てのノードの需要を満たす経路の組で、コストの和が最小となる経路の組を選択する最適化問題を解くことにより、最適な経路を求める。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上記技術では、コストの和が最小となる経路の組を選択する最適化問題を解く前に実行される経路生成の処理時間が長くなり、配送計画問題の求解時間が長時間化する。
【0009】
例えば、ある便の経路として生成された各経路に対して、ツリー形式で、複数の経路がその次の便の経路として生成されるので、後の方の便で生成される経路の数が膨大になってしまい、経路生成の処理時間が長くなる。また、ノード数、運搬車数、需要量が膨大になると、膨大な経路の検討および生成が実行されるので、コンピュータの性能によっては経路生成の処理が終了しないことも起こり得る。
【0010】
一つの側面では、配送計画問題の求解時間を短縮することができる情報処理装置、情報処理方法および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
第1の案では、情報処理装置は、複数の移動体を用いて、複数のノードに荷物を運搬する、または前記複数のノードから荷物を運搬する際の経路最適化問題の求解において、前記複数のノードに含まれる各ノードを特定するノード情報と、前記複数のノードの各々の需要量を示す需要量情報と、前記複数の移動体の各々の最大積載量を示す移動体情報と、を保持する記憶部を有する。情報処理装置は、前記複数の移動体の各々について、前記複数のノードのうち前記荷物を運搬するノード群であって、前記最大積載量の条件を満たすノード群を特定し、前記ノード群に含まれる各ノードの運搬順序を規定する複数の経路を生成する生成部と、前記生成部により生成された前記複数の経路に基づいて、前記経路最適化問題の求解処理を実行する演算部とを有する。前記生成部は、前記ノード情報と前記需要量情報と前記移動体情報とに基づき、前記複数のノードから、前記複数の移動体のうちの第N番目の移動体によって前記荷物が運搬される第1ノード群を特定する特定処理と、前記第1ノード群に含まれる各ノードについて、前記第N番目の移動体によって前記荷物が運搬された後の残需要を示す残需要情報を生成する情報生成処理と、前記残需要情報に基づき、前記複数のノードのうち前記残需要のないノードを前記複数のノードから除外することによって前記ノード情報を更新する情報更新処理とを実行する。前記生成部は、前記複数の移動体の各々について、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行い、前記情報更新処理によって更新された前記ノード情報に基づき、前記残需要のないノードの数が所定値以上であるかを判定し、前記残需要のないノードの数が前記所定値以上であると判定された場合、前記特定処理、前記情報生成処理及び前記情報更新処理を順次行う処理を停止する。
【発明の効果】
【0012】
一実施形態によれば、配送計画問題の求解時間を短縮することができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、実施例1にかかる情報処理装置を説明する図である。
【
図2】
図2は、経路生成の参考技術を説明する図である。
【
図3】
図3は、各経路の運行時間とコストとの関係を示す図である。
【
図4】
図4は、参考装置の処理手順を示すフローチャートである。
【
図5】
図5は、経路生成処理の処理手順の一例を示す図である。
【
図6】
図6は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。
【
図7】
図7は、移動時間テーブルのデータ構造の一例を示す図である。
【
図8】
図8は、需要テーブルのデータ構造の一例を示す図である。
【
図9】
図9は、time windowテーブルのデータ構造の一例を示す図である。
【
図11】
図11は、実施例1にかかる最適化処理手順の流れを示すフローチャートである。
【
図12】
図12は、実施例1にかかる経路生成手順の流れを示すフローチャートである。
【発明を実施するための形態】
【0014】
以下に、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例1】
【0015】
[情報処理装置の説明]
図1は、実施例1にかかる情報処理装置100を説明する図である。
図1に示す情報処理装置100は、複数の運搬車(以下では「vehicle」と記載する場合がある)によって複数のノードに荷物を配送する配送計画問題を最適化し、vehicleのコストを最小化する経路を求めるコンピュータ装置の一例である。
【0016】
(参考技術の説明)
ここで、一般的に利用される参考技術について説明する。参考技術に関する装置を、便宜的に「参考装置」と表記する。たとえば、参考装置は、経路を生成する処理、経路を絞り込む処理、経路を選択する処理を実行する。
【0017】
まず、参考装置が実行する「経路を生成する処理」について説明する。参考装置は、複数の運搬車の各々について、複数のノードのうち荷物を運搬するノード群であって、運搬車の最大積載量の条件を満たすノード群を特定し、ノード群に含まれる各ノードの運搬順序を規定する複数の経路を生成する。より具体的には、参考装置は、複数のノードに含まれる各ノードを示すノード情報と、各ノードの需要を示す需要情報と、各運搬車の最大積載量を示す移動体情報とを保持する。参考装置は、ノード情報と需要情報と移動体情報に基づき、複数のノードから、複数の運搬車のうちの第N番目の運搬車によって荷物が運搬される第1ノード群を特定する。第1ノード群に含まれるノードの需要量の合計値は、運搬車の最大積載容量を超えないように設定される。更に、参考装置は、第1ノード群に含まれる各ノードを運搬車がどのような順番で運搬するかを決定する。言い換えれば、第1ノード群に含まれる各ノードをどのような順番で運搬するかという情報は、運搬車の移動経路を示す情報に相当する。
【0018】
なお、第1ノード群に含まれる各ノードへの運搬車による運搬順序は、当該運搬車による運搬に要する時間が最小となるように選択される。運搬に要する時間が最小となるように運搬順序を決定する処理は、イジングマシンなどの組み合わせ最適化装置を用いて実行されてもよい。なお、第1ノード群は複数特定されてもよい。
【0019】
次に参考装置は、第1ノード群に含まれる各ノードについて、第N番目の運搬車によって荷物が運搬された後の残需要を示す残需要情報を生成する。参考装置は、残需要情報に基づき、複数のノードのうち残需要のないノードを複数のノードから除外することによってノード情報を更新する。
【0020】
参考装置は、複数の移動体の各々について、特定する処理、情報を生成する処理及び情報を更新する処理を順次行い、複数の移動経路を示す情報を生成する。以下、移動経路を単に「経路」と呼ぶこととする。次に
図2に基づいて経路情報の生成について具体的に説明する。
【0021】
図2は、経路生成の参考技術を説明する図である。
図2に示すように、参考装置は、1便目の経路として、配送計画問題の条件を満たす経路を生成する。なお、配送計画問題の条件を満たす経路を全て生成してしまうと、生成される全経路の数が膨大になってしまうので、例えば積載率が閾値以上の経路のみを生成するなどの制限が設けられる。
図2では、1便目として3通りの経路(経路r1、経路r2、経路r3)が生成されたことを表しており、各運搬車は複数のノードを訪れても良い。
【0022】
経路r1は、複数のノードp1,1,p1,2,p1,3を所定の順序で経由する経路である。ここで、経路r1には、複数のノードp1,1,p1,2,p1,3に対応する荷量x1,1,x1,2,x1,3は、それぞれ、該当するノードの需要に対応する。たとえば、ノードp1,1の需要は、「x1,1」となる。
【0023】
経路r2は、各ノードp2,1,p2,2を所定の順序で経由する経路である。ノードp2,1,p2,2に対応する荷量x2,1,x2,2は、それぞれ、該当するノードの需要に対応する。
【0024】
経路r3は、ノードp3,1を経由する経路である。ノードp3,1に対応する荷量x2,1は、該当するノードの需要に対応する。ここで参考装置は、運搬車によってまだ運搬されていない荷物(残需要)の量を示す残需要情報を生成する。残需要情報は、需要情報を更新することによって生成されてもよい。
【0025】
次に、参考装置は残需要情報に基づき、i便目(i>2)の経路として、1便目からi-1便目の経路によって運搬しきれなかった荷物を、運搬する経路を生成する。
図2では、1便目が経路r1のように運搬した場合、2便目として経路r4、経路r5、経路r6が生成されたことを示す。1便目が経路r1の運搬をしたのか、経路r2の運搬をしたかによって、その後の残需要が異なるため、2便目で生成される経路も異なる。たとえば、1便目が経路r2のように運搬した場合、2便目として経路r7等が生成される。1便目が経路r3のように運搬した場合、2便目として経路r8等が生成される。経路r4~経路r8の場所、荷量に関する説明を省略する。
【0026】
そして、参考装置は、n便目に生成されたある経路による運搬の後、全てのノードでの残需要が0になった場合、n+1便目以降の経路生成は行わない。
【0027】
続いて、参考装置が実行する「経路を絞り込む処理」について説明する。参考装置は、上記経路を生成する処理によって生成した複数の経路のうち、運行時間が閾値(duration_thres)以上の経路を取り除くなどの処理を実行する。なお、参考装置は、運行時間に変えて、運行距離が所定の閾値以上となる経路を取り除いてもよい。
【0028】
図3は、各経路の運行時間とコストとの関係を示す図である。
図3のグラフの横軸は、経路の運行時間に対応し、縦軸は、vehicleのコストに対応する。
図3に示すように、経路の運行時間が増えると共に、その経路を運行するvehicleのコストは階段状に増加する。ここでvehicleのコストとは、配送にかかる時間や、配送にかかるガソリン代や各種費用などの配送料を含んだものである。
【0029】
続いて、参考装置が実行する「経路を選択する処理」について説明する。参考装置は、上記の経路を絞り込む処理によって絞り込まれた経路の中から、需要を満たし、コストの和が最小の経路の組を選択する最適化問題を最適化装置を使用して解く。
【0030】
続いて、参考装置の処理手順の一例について説明する。
図4は、参考装置の処理手順を示すフローチャートである。
図4に示すように、参考装置は、入力データを読み込む(ステップS101)。入力データには、各ノードの需要、time window、ノード間の移動時間が含まれる。参考装置は、パラメータを設定する(ステップS102)。パラメータには、経路絞り込み時に使用する、経路の運行時間の閾値(duration_thres)が含まれる。
【0031】
参考装置は、経路生成処理を実行する(ステップS103)。参考装置は、Rに含まれる経路のうち、運行時間が閾値(duration_thres)以上の経路を取り除く(ステップS104)。Rについては、後述の
図5で説明する。
【0032】
参考装置は、Rに含まれる経路の中から、需要を満たし、コストの和が最小の経路の組を選ぶ最適化問題を、最適化装置を用いて解く(ステップS105)。参考装置は、最適化問題により選ばれた経路のデータを出力する(ステップS106)。
【0033】
続いて、
図4のステップS103で説明した経路生成処理の処理手順について説明する。
図5は、経路生成処理の処理手順の一例を示す図である。
図5に示すように、参考装置は、iに0を設定する(ステップS201)。
図5の説明では、iは、i便目に対応する。参考装置は、残需要に、入力データの需要を設定する(ステップS202)。
【0034】
参考装置は、iに1を加算した値によって、iを更新する(ステップS203)。参考装置は、i便目の経路として、残需要を運搬する経路を生成する(ステップS204)。参考装置は、生成した経路の集合をRiとする(ステップS205)。
【0035】
参考装置は、残需要の値を、生成された経路∈Riによる運搬後の、残需要の値に更新する(ステップS206)。参考装置は、ある経路による運搬後の残需要が、全ノードで0でない場合には(ステップS207,No)、ステップS201に移行する。
【0036】
参考装置は、ある経路による運搬後の残需要が、全ノードで0となる場合には(ステップS207,Yes)、∪iRi(各便の経路を集めたのも)を、Rに設定する(ステップS208)。参考技術は、Rの各経路の運行時間を、各ノードのtime window、ノード間の移動時間を基にして算出する(ステップS209)。参考装置は、Rの各経路のコストを運行時間から算出する(ステップS210)。
【0037】
(参考技術の問題点)
上述したように、参考技術では、ある便の経路として生成された各経路に対して、ツリー形式で、複数の経路がその次の便の経路として生成されるので、後の方の便で生成される経路の数が膨大になってしまい、経路生成の処理時間が長くなる。また、ノード数、運搬車数、需要量が膨大になると、膨大な経路の検討および生成が実行されるので、コンピュータの性能によっては経路生成の処理が終了しないことも起こり得る。
【0038】
(実施例1による処理)
第1実施例においては、複数の移動体を用いて、複数のノードに荷物を運搬する、または前記複数のノードから荷物を運搬する際の経路最適化問題の求解方法が開示される。第1実施例における情報処理装置は、複数のノードに含まれる各ノードを特定するノード情報と、複数のノードの各々の需要量を示す需要量情報と、前記複数の移動体の各々の最大積載量を示す移動体情報と、を保持する。
【0039】
情報処理装置は、複数の移動体の各々について、複数のノードのうち荷物を運搬するノード群であって、最大積載量の条件を満たすノード群を特定し、ノード群に含まれる各ノードの運搬順序を規定する複数の経路を生成する。
【0040】
更に情報処理装置は、生成された複数の経路に基づいて、経路最適化問題の求解処理を実行することにより、複数の移動体のそれぞれが運搬処理を行うノード群と、ノード群に含まれる各ノードの運搬順序を示す経路を特定する。
【0041】
情報処理装置は、複数の経路を生成する際に以下の処理を実行する。情報処理装置は、ノード情報と需要量情報と移動体情報とに基づき、複数のノードから、複数の移動体のうちの第N番目の移動体によって荷物が運搬される第1ノード群を特定する特定処理を実行する。
【0042】
次に情報処理装置は、第1ノード群に含まれる各ノードについて、第N番目の移動体によって荷物が運搬された後の残需要を示す残需要情報を生成する情報生成処理を実行する。次に情報処理装置は、残需要情報に基づき、複数のノードのうち残需要のないノードを複数のノードから除外することによってノード情報を更新する情報更新処理を実行する。
【0043】
情報処理装置は、複数の移動体の各々について、上記の特定処理、情報生成処理、情報更新処理を順次実行することで複数の経路を生成する。そして情報処理装置は、情報更新処理によって更新されたノード情報に基づき、残需要のないノードの数が所定値以上であるかを判定し、残需要のないノードの数が所定値以上であると判定された場合、特定処理、情報生成処理及び情報更新処理を順次行う処理を停止する。以下、より詳細な例が開示される。
【0044】
図1に示すように、実施例1にかかる情報処理装置100は、ノード間の移動時間、デポから各ノードに、または各ノードからデポに運搬される必要のある荷物量(需要)、各ノードの「time window」を入力として、複数のvehicleによって複数のノードに荷物を配送する配送計画問題の条件を満たす複数の経路を生成する。
【0045】
このとき、情報処理装置100は、所定便目の経路として生成された各経路について、残需要によるフィルタリングを実行する。すなわち、情報処理装置100は、各経路による運搬後に、運搬される必要がある荷物量のうち未搬送の荷物(残需要)が存在するノード数を計数する。そして、情報処理装置100は、各経路のうち残需要が存在するノード数が閾値以上である経路を除外して、複数の経路を生成する。
【0046】
その後、情報処理装置100は、複数の経路から経路の絞り込みを実行し、目的関数を生成し、複数の経路に関する情報をイジングマシンに入力して、目的関数を最適化することにより、配送計画問題における最適経路、例えば運搬に要するコストの和を最小化する経路を算出して出力する。
【0047】
このように、情報処理装置100は、コストの和が最小となる経路の組を選択する最適化問題を解く前に実行される経路生成の処理時間を短縮することができ、配送計画問題の求解時間を短縮することができる。
【0048】
[情報処理装置100の機能構成]
次に、本実施例に係る情報処理装置の構成について説明する。
図6は、実施例1にかかる情報処理装置100の機能構成を示す機能ブロック図である。
図6に示すように、この情報処理装置1000は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150とを有する。
【0049】
通信部110は、ネットワークを介して外部装置とデータ通信を実行する処理部であり、例えば通信インタフェースなどにより実現される。通信部110は、通信装置に対応する。制御部150は、通信部110を介して、外部装置とデータをやり取りする。
【0050】
入力部120は、各種のデータを情報処理装置100の制御部150に入力する処理部である。例えば、入力部120は、キーボードやマウス、タッチパネル等により実現される。
【0051】
表示部130は、制御部160から出力される情報を表示する処理部である。表示部130は、例えば、有機EL(Electro Luminescence)ディスプレイ、液晶ディスプレイ、タッチパネル等により実現される。
【0052】
記憶部140は、移動時間テーブル141と、需要テーブル142と、time windowテーブル143とを有する。例えば、記憶部140は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置により実現される。
【0053】
移動時間テーブル141は、vehicleの移動時間に関する情報を保持するテーブルである。
図7は、移動時間テーブルのデータ構造の一例を示す図である。
図7に示すように、この移動時間テーブル141は、デポからノードまでの、または、ノードからデポまでの移動時間、ノード間の移動時間を有する。たとえば、デポからノードnd1までの移動時間は「10分」である。ノードnd1からノードnd2までの移動時間は「5分」である。他の移動時間に関する説明は省略する。
【0054】
需要テーブル142は、需要に関する情報を保持するテーブルである。
図8は、需要テーブルのデータ構造の一例を示す図である。
図8に示すように、この需要テーブル142は、運搬元と、運搬先と、需要とを対応付ける。たとえば、
図8の1行目では、運搬元「デポ」から、運搬先「ノードnd1」へ運搬される必要のある荷物量(需要)が「5個」であることが示される。他の需要に関する説明は省略する。なお、本明細において、需要テーブルに格納される、各ノードの需要量に関する情報を、需要量情報と呼ぶこととする。
【0055】
time windowテーブル143は、vehicleが各ノード(あるいはデポ)を訪れられる時間帯に関する情報を保持するテーブルである。
図9は、time windowテーブルのデータ構造の一例を示す図である。
図9に示すように、vehicleは、デポに20:00までに戻るという制約がある。vehicleが、ノードnd1に訪れられる時間帯は17:00~19:00である。vehicleが、ノードnd2に訪れられる時間帯は18:00~19:30である。他のノードに訪れられる時間帯の説明は省略する。
【0056】
図6の説明に戻り、制御部160は、受付部151と、生成部152と、絞り込み部153と、目的関数生成部154と、演算部155と、出力部156とを有する。制御部150は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部150は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
【0057】
受付部151は、外部装置等から、入力データとして、移動時間テーブル141、需要テーブル142、time windowテーブル143を取得する処理部である。受付部151は、取得した、移動時間テーブル141、需要テーブル142、time windowテーブル143を、記憶部140に格納する。受付部151は、入力部120を介して、入力データを取得してもよい。また記憶部140には、各運搬車の最大積載量を示す移動体情報も格納される。
【0058】
生成部152は、移動時間テーブル141、需要テーブル142、time windowテーブル143を基にして、経路を生成する処理部である。たとえば、生成部152は、移動時間テーブル141、需要テーブル142、time windowテーブル143を基にして、配送計画問題の条件を満たす経路を生成し、生成した経路に関する情報を、絞り込み部153に出力する。
【0059】
ここで、生成部152が実行する経路を生成する処理について説明する。たとえば、生成部152が、各経路を生成する場合に、以下に説明する第1ステップから第4ステップを順に実行する。
【0060】
第1ステップについて説明する。生成部152は、1つの経路でvehicleが訪れるノードを決定するために、全てのノードの中からp個のノードを選ぶ組み合わせを列挙する。pが訪れるノードの数に対応し、1≦p≦pmaxを満たす全ての整数を考える。pmaxは、予め、パラメータとして設定される。pmaxを大きすぎる値に設定してしまうと、訪れる全てのノートのtime windowに間にあうことが不可能になるため、大きすぎない値を設定する。
【0061】
第2ステップについて説明する。生成部152は、第1ステップで列挙した、訪れるノードの組に対して、ノードの残需要の和を計算し、その分を供給することでvehicleの積載率の閾値を超えるか否かを判定する。生成部152は、vehicleの積載率が閾値を超えない場合、かかるノードの組を訪れる経路を生成しない。
【0062】
第3ステップについて説明する。生成部152は、訪れるノードの組に対して、訪れる順番を決定する。生成部152は、vehicleが、各ノードのtime windowの範囲内に訪れるという条件のもとで、運行時間が最短になる順番で訪れるように決定する。生成部152は、運行時間を計算する場合に、各ノード間の移動の所要時間のデータを使用する。
【0063】
第4ステップについて説明する。生成部152は、訪れるノードでの供給を決定する。生成部152は、vehicleの最大積載量を超えない範囲で、最大の供給を行う。生成部152は、2個以上のノードを訪れる経路に対しては、デポからより遠いノードの残需要を減らすことを優先して、各ノードでの供給を決定する。
【0064】
このようなステップの実行時に、生成部152は、所定便目の経路として生成された各経路について、各経路による運搬後に、運搬される必要がある荷物量のうち未搬送の荷物(残需要)が存在するノード数として、残需要が0より大きいノードを計数する。そして、生成部152は、各経路のうち、計数された残需要が0より大きいノード数が閾値以上である経路を除外して、複数の経路を生成する。
【0065】
つまり、生成部152は、k番目の経路を生成した後にk+1番目の経路を生成するときに、k番目の各経路による配送後、配送先となるノードが閾値以上残っている経路については、k+1番目の経路の対象外とする。
【0066】
図10は、経路生成を説明する図である。
図10に示すように、生成部152は、1便目などが異なるものの、k番目の経路として、経路x、経路y、経路z、経路wなどを生成する。そして、生成部152は、k番目の経路である経路xによる配送後に残需要があるノードの数が200、経路yによる配送後に残需要があるノードの数が50、経路zによる配送後に残需要があるノードの数が100、経路wによる配送後に残需要があるノードの数が120であることを計数したとする。
【0067】
この場合、生成部152は、閾値「90」によりフィルタ処理を実行し、閾値以上である経路x、経路z、経路wを経路生成の対象から除外し、閾値未満である経路yについて、k+1番目の経路生成を実行する。すなわち、生成部152は、k+1便目の経路を生成する時は、k便目に生成された経路yによる運搬後の残需要を運搬する経路を生成する。一方で、生成部152は、k便目に生成された経路x、経路z、経路wによる運搬後の残需要を運搬する経路は生成しない。
【0068】
図6に戻り、目的関数生成部154は、演算部155に入力するための目的関数を生成する処理部である。目的関数生成部154が生成する目的関数は、式(1)に示すように、コスト項とペナルティ項とを加算した関数である。なお、c
rは、経路rのコストを示す。x
rは、経路rを選択するか否かを示す変数(x
r∈{0,1})である。x
r=0の場合、経路rは選択されない。x
r=1の場合、経路rは選択される。iはノードを示す。Nは、ノード数を示す。D
iは、ノードiでの需要を示す。S
r,iは、経路rのノードiでの供給を示す。y
iは、ノードiでの供給が、需要をどれだけ超えるかを示す変数(0以上の整数)である。
【0069】
【0070】
ここで、ペナルティ項は、次のように設計されている。式(2)に示す制約の式が、全てのiで満たされた場合、yi(≧0)が適切な値に設定されれば、ペナルティ項は0となる。式(2)に示す制約の式が、あるiで満たされなかった場合、yi(≧0)がどのような値に設定されても、ペナルティ項は、0より大きな値となる。なお、式(2)では、全てのノードiで、選ばれた経路による供給の和が需要を満たすことを意味する。
【0071】
【0072】
演算部155は、目的関数生成部154により生成された目的関数の値が最小となるxr、yiの値を求めることにより、運搬車のコストを最小化する経路を求める処理部である。つまり、演算部155は、最小化された目的関数からxr、yiの値を取得し、xr=1であるノードを選択して経路を生成し、選択した経路の情報を、出力部156に出力する。なお、演算部155は、目的関数を最適化装置、例えばイジングマシンに入力し、イジングマシンを実行することで、目的関数の値が最小となるxr、yiの値を求めることもできる。
【0073】
出力部156は、演算部155によって選択された経路の情報を、表示部130に出力して表示させる処理部である。出力部は、経路の情報を、外部装置等に通知してもよい。なお、演算部155の出力は、どの経路が選ばれたのかを示すビット列のみである。出力部156は、出力されたビット列と、第2の経路集合とを比較して、選択された経路のデータを出力してもよい。
【0074】
[処理の流れ]
図11は、実施例1にかかる最適化処理手順の流れを示すフローチャートである。
図11に示すように、情報処理装置100の生成部152は、入力データを読み込む(ステップS301)。入力データには、各ノードの需要、time window、ノード間の移動時間が含まれる。生成部152は、パラメータを設定する(ステップS302)。パラメータには、経路絞り込み時に使用する、経路の運行時間の閾値(duration_thres)に加えて、経路生成時のフィルタのパラメータである「level_filter_start」が含まれる。
【0075】
生成部152は、経路生成処理を実行する(ステップS303)。生成部152は、Rに含まれる経路のうち、運行時間が閾値(duration_thres)以上の経路を取り除く(ステップS304)。
【0076】
情報処理装置100の演算部155は、Rreducedに含まれる経路の中から、需要を満たし、コストの和が最小の経路の組を選ぶ最適化問題を、最適化装置、例えばイジングマシンを用いて解く(ステップS305)。情報処理装置100の出力部156は、最適化問題により選ばれた経路のデータを出力する(ステップS306)。
【0077】
(経路生成処理)
次に、
図11のステップ303で実行される経路生成処理について説明する。
図12は、実施例1にかかる経路生成手順の流れを示すフローチャートである。
図12に示すように、情報処理装置100の生成部152は、iに0を設定し(ステップS401)、残需要に、入力データの需要を設定する(ステップS402)。なお、iは、i便目に対応する。
【0078】
生成部152は、iに1を加算した値によって、iを更新する(ステップS403)。生成部152は、i便目の経路として、残需要を運搬する経路を生成する(ステップS404)。生成部152は、生成した経路の集合をRiとする(ステップS405)。
【0079】
生成部152は、残需要の値を、生成された経路∈Riによる運搬後の、残需要の値に更新する(ステップS406)。ここで、生成部152は、iがパラメータ「level_filter_start」以上の場合(S407,Yes)、Riに含まれる経路の中で、その経路による運搬後の残需要が0より大きいノードの数が閾値以上の経路をRiから取り除く(ステップS408)。なお、生成部152は、iがパラメータ「level_filter_start」未満の場合(S407,No)、S408を実行しない。
【0080】
その後、生成部152は、ある経路による運搬後の残需要が、全ノードで0でない場合には(ステップS409,No)、ステップS401に移行する。
【0081】
生成部152は、ある経路による運搬後の残需要が、全ノードで0となる場合には(ステップS409,Yes)、∪iRi(各便の経路を集めたのも)を、Rに設定する(ステップS410)。生成部152は、Rの各経路の運行時間を、各ノードのtime window、ノード間の移動時間を基にして算出する(ステップS411)。参考装置は、Rの各経路のコストを運行時間から算出する(ステップS412)。
【0082】
[効果]
上述したように、情報処理装置100は、経路生成の途中で、残需要に基づくフィルタ処理を行うことで、経路生成の処理時間を短縮できる。この結果、情報処理装置100は、配送計画問題の求解時間を短縮することができる。
【0083】
ここで、情報処理装置100を用いた効果について説明する。ここでは、デポが1個、ノードが22個とし、運搬に使用するvehicleとして、2種類の車種を用意する。車種1は、積載可能な荷物数が最大で21個、配送にかかるコストが17,304~21,363(運行時間により異なる)とする。車種2は、積載可能な荷物数が最大で12個、配送にかかるコストが13,008~16,060(運行時間により異なる)とする。
【0084】
このような環境において、情報処理装置100は、各ノードの需要だけ異なる3つのテストデータに対して、経路生成を行った。テストデータ1は実問題のデータである。テストデータ2とテストデータ3は、それぞれテストデータ1の需要を約5%、約10%増やすように作成した。テストデータ1では、車種1が9便、車種2が39便で需要を満たすことができ、テストデータ2では、車種1が10便、車種2が40便で需要を満たすことができ、テストデータ3が、車種1が10便、車種2が43便で需要を満たすことができた。
【0085】
次に、フィルタリング結果について説明する。
図13は、効果を説明する図である。上記テストデータにおいて、何便目からフィルタ処理を始めるかを、k=3,4,5,6と変えて、経路生成の処理時間を計測し、その処理時間を
図13に示した。
図13に示すように、kの値を3,4,5のどの値に設定しても、生成された経路から得られる最適解のコストは同じであった。また、
図13に示すように、早い段階でフィルタ処理を始めることにより、経路生成の処理時間をより短縮することができる。
【実施例2】
【0086】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【0087】
[数値等]
上記実施例で用いたvehicle数、ノード数、需要などの各種パラメータ、目的関数等は、あくまで一例であり、任意に変更することができる。また、各フローチャートで説明した処理の流れも矛盾のない範囲内で適宜変更することができる。
【0088】
[フィルタ処理]
例えば、上記実施例では、残需要数が1以上であるノードの数が閾値以上である経路を除外する例を説明したが、これに限定されるものではない。例えば、残需要数が1以上であるノードの数が最も少ない経路、または、残需要数が1以上であるノードの数が少ない順に所定数の経路を選択し、選択された経路以外を除外することもできる。このようにすることで、絞り込みを抑制しつつ、処理時間の短縮を図ることができる。
【0089】
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。なお、生成部152は、生成部の一例であり、目的関数生成部154は、目的関数生成部の一例であり、演算部155は、演算部の一例である。
【0090】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0091】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0092】
[ハードウェア]
次に、情報処理装置100のハードウェア構成を説明する。
図14は、ハードウェア構成例を説明する図である。
図14に示すように、情報処理装置100は、通信装置100a、HDD(Hard Disk Drive)100b、メモリ100c、プロセッサ100dを有する。また、
図14に示した各部は、バス等で相互に接続される。
【0093】
通信装置100aは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。HDD100bは、
図6に示した機能を動作させるプログラムやDBを記憶する。
【0094】
プロセッサ100dは、
図6に示した各処理部と同様の処理を実行するプログラムをHDD100b等から読み出してメモリ100cに展開することで、
図6等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、情報処理装置100が有する各処理部と同様の機能を実行する。具体的には、プロセッサ100dは、受付部151と、生成部152と、絞り込み部153と、目的関数生成部154と、演算部155と、出力部156等と同様の機能を有するプログラムをHDD100b等から読み出す。そして、プロセッサ100dは、受付部151と、生成部152と、絞り込み部153と、目的関数生成部154と、演算部155と、出力部156等と同様の処理を実行するプロセスを実行する。
【0095】
このように、情報処理装置100は、プログラムを読み出して実行することで情報処理方法を実行する情報処理装置として動作する。また、情報処理装置100は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【0096】
100 情報処理装置
110 通信部
120 入力部
130 表示部
140 記憶部
141 移動時間テーブル
142 需要テーブル
143 time windowテーブル
150 制御部
151 受付部
152 生成部
153 絞り込み部
154 目的関数生成部
155 演算部
156 出力部