IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧 ▶ 学校法人早稲田大学の特許一覧

特開2024-11066配送計画装置、配送計画方法、及びプログラム
<>
  • 特開-配送計画装置、配送計画方法、及びプログラム 図1
  • 特開-配送計画装置、配送計画方法、及びプログラム 図2
  • 特開-配送計画装置、配送計画方法、及びプログラム 図3
  • 特開-配送計画装置、配送計画方法、及びプログラム 図4
  • 特開-配送計画装置、配送計画方法、及びプログラム 図5
  • 特開-配送計画装置、配送計画方法、及びプログラム 図6
  • 特開-配送計画装置、配送計画方法、及びプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024011066
(43)【公開日】2024-01-25
(54)【発明の名称】配送計画装置、配送計画方法、及びプログラム
(51)【国際特許分類】
   G06Q 10/047 20230101AFI20240118BHJP
   G06N 20/00 20190101ALI20240118BHJP
   G06Q 10/06 20230101ALI20240118BHJP
【FI】
G06Q10/04 310
G06N20/00
G06Q10/06
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022112753
(22)【出願日】2022-07-13
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】899000068
【氏名又は名称】学校法人早稲田大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】オウ ショウ
(72)【発明者】
【氏名】中野 雄介
(72)【発明者】
【氏名】西松 研
(72)【発明者】
【氏名】瀬沼 悠平
(72)【発明者】
【氏名】大谷 淳
(72)【発明者】
【氏名】長谷川 克也
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA04
5L049BB65
(57)【要約】
【課題】ノード間のエッジの状況を考慮した配送計画を実現する。
【解決手段】配送計画装置において、複数のノードにおけるノードの組ごとに、ノード間の移動時間又は移動距離であるエッジ情報を算出するエッジ計算部と、アクター‐クリティック方式による強化学習を行うニューラルネットワークを用いて、ある場所から出発する移動体により前記複数のノードに対してサービス提供を行うための経路を決定する配送計画問題を解くアルゴリズム計算部と、を備え、前記アルゴリズム計算部は、前記エッジ計算部により得られた前記エッジ情報に関する特徴量を用いて、前記配送計画問題を解く。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数のノードにおけるノードの組ごとに、ノード間の移動時間又は移動距離であるエッジ情報を算出するエッジ計算部と、
アクター‐クリティック方式による強化学習を行うニューラルネットワークを用いて、ある場所から出発する移動体により前記複数のノードに対してサービス提供を行うための経路を決定する配送計画問題を解くアルゴリズム計算部と、を備え、
前記アルゴリズム計算部は、前記エッジ計算部により得られた前記エッジ情報に関する特徴量を用いて、前記配送計画問題を解く
配送計画装置。
【請求項2】
前記配送計画装置は、地図API部を更に備え、
前記エッジ計算部は、前記地図API部により取得した道路状況に基づいて、前記エッジ情報を算出する
請求項1に記載の配送計画装置。
【請求項3】
前記アルゴリズム計算部は、前記エッジ情報を用いて前記特徴量を計算するグラフ畳み込み層を有する
請求項1に記載の配送計画装置。
【請求項4】
前記アルゴリズム計算部は、アテンション機構を含み、前記アテンション機構は、前記特徴量を用いて、各ノードが配送先として選択される確率を計算する
請求項1に記載の配送計画装置。
【請求項5】
コンピュータが実行する配送計画方法であって、
複数のノードにおけるノードの組ごとに、ノード間の移動時間又は移動距離であるエッジ情報を算出するエッジ計算ステップと、
アクター‐クリティック方式による強化学習を行うニューラルネットワークを用いて、ある場所から出発する移動体により前記複数のノードに対してサービス提供を行うための経路を決定する配送計画問題を解くアルゴリズム計算ステップと、を備え、
前記アルゴリズム計算ステップにおいて、前記エッジ計算ステップにより得られた前記エッジ情報に関する特徴量を用いて、前記配送計画問題を解く
配送計画方法。
【請求項6】
コンピュータを、請求項1ないし4のうちずれか1項に記載の配送計画装置における各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、配送計画問題を解く技術に関連するものである。
【背景技術】
【0002】
配送計画問題(VRP:vehicle routing problem)とは、荷物の集積所(サービスセンター)から各顧客(各ノード)にサービス車両(配送者)を使用して荷物を配送するときに、どのサービス車両がどの顧客をどの順番で回れば最適か(コストが最も低くなるか)を考える最適化問題である。なお、「配送計画問題」を「配車計画問題」と称してもよい。
【0003】
実際のアプリケーションでは、ドローンの経路生成、電子商取引のジャストインタイム配送、コールドチェーン配送、店舗補充など、流通とサービスコストをVRPの解を通して最適化できる多くの実用的なビジネスシナリオが存在する。
【0004】
そのため、異なる実際的な要求に応じて、種々のVRPのバリエーションが提案されている。VRPのバリエーションとして、例えば、時間枠付きVRP(VRPTW)がある。VRPTWにおいては、顧客に対して商品の配送のための時間枠が設定される。他のVRPとして、マルチデポ配送計画問題(MDVRP)がある。MDVRPでは、複数のデポ(サービスセンタ)が存在し、そこから車両が出発したり、そこで走行を終了したりすることができる。
【0005】
VRPとそのバリエーションはNP困難な問題であることが証明されているので、近似解を返す種々のオペレーションズリサーチ(OR)ベースの方法が長年研究されている。
【0006】
しかしながら、実用規模のVRP問題(100以上の顧客を有する)では、ORベースのアルゴリズムを用いた場合、最適解又は近似解を得るために、計算に数日又は数年を必要とするという課題がある。
【0007】
例えは非特許文献1には、アクター‐クリティック方式の強化学習に基づくVRPの解法が開示されており、これにより、ORベースのアルゴリズムの欠点が解決されている。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】Nazari, Mohammadreza, Afshin Oroojlooy, Lawrence V. Snyder, and Martin Takac, "Reinforcement Learning for Solving the Vehicle Routing Problem", NIPS, 2018.
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、非特許文献1等に開示されている強化学習ベースの手法では、ノード間のエッジを直線距離で近似しているため、通過不可能箇所、あるいは渋滞などの状況を考慮できない。また、エッジが変化する場合(急に渋滞になるなどの場合)にも対応できない。
【0010】
本発明は上記の点に鑑みてなされたものであり、ノード間のエッジの状況を考慮した配送計画を実現するための技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
開示の技術によれば、複数のノードにおけるノードの組ごとに、ノード間の移動時間又は移動距離であるエッジ情報を算出するエッジ計算部と、
アクター‐クリティック方式による強化学習を行うニューラルネットワークを用いて、ある場所から出発する移動体により前記複数のノードに対してサービス提供を行うための経路を決定する配送計画問題を解くアルゴリズム計算部と、を備え、
前記アルゴリズム計算部は、前記エッジ計算部により得られた前記エッジ情報に関する特徴量を用いて、前記配送計画問題を解く
配送計画装置が提供される。
【発明の効果】
【0012】
開示の技術によれば、ノード間のエッジの状況を考慮した配送計画を実現することが可能となる。
【図面の簡単な説明】
【0013】
図1】本発明の実施の形態における装置構成図である。
図2】アルゴリズム計算部130の構成図である。
図3】問題設定を示す図である。
図4】グラフ畳み込みを説明するための図である。
図5】アテンション機構の処理を示す図である。
図6】強化学習のアルゴリズム(処理手順)を示す図である。
図7】装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0015】
例えば、本実施の形態では、エッジに関する特徴量を得るために、GCN(Graph Convolutional Network:グラフ畳み込みネットワーク)を使用しているが、GCN以外の手法を用いてエッジに関する特徴量を得ることとしてもよい。
【0016】
また、本実施の形態では、車両により配送を行うこととしているが、これは例である。移動するもの(これを「移動体」と呼ぶことにする)であれば、どのようなものが配送を行ってもよい。例えば、当該移動体は、人、ドローン、船、自転車、オートバイ、飛行機、宇宙船等であってもよい。
【0017】
(装置構成例)
図1に本実施の形態における配送計画装置100の構成図を示す。図1に示すように、配送計画装置100は、ノード情報収集部110、サービス車両情報収集部120、アルゴリズム計算部130、地図API部140、配車部150、エッジ計算部160を有する。なお、地図API部140については、ノード情報収集部110からの出力と、アルゴリズム計算部130からの出力の両方に使用することから、便宜上、2箇所に記載している。
【0018】
配送計画装置100は、1つの装置(コンピュータ)で実装されてもよいし、複数の装置で実装されてもよい。例えば、アルゴリズム計算部130があるコンピュータで実装され、それ以外の機能部が別のコンピュータで実装されてもよい。配送計画装置100の動作概要は下記のとおりである。
【0019】
ノード情報収集部110は、各ノードにおける情報を取得する。各ノードの情報は、例えば、各ノードの位置情報及び需要である。
【0020】
エッジ計算部160は地図API部140を使用して、実際のノード間の移動時間(又は移動距離)を算出し、算出結果を距離行列(Distance Matrix)の形で出力する。なお、移動距離と移動時間を総称して移動コストと呼んでもよい。なお、距離行列(Distance Matrix)での要素が移動時間であってもよい。
【0021】
サービス車両情報収集部120は、各サービス車両における情報を収集する。各サービス車両における情報は、例えば、各サービス車両の出発位置等である。なお、本実施の形態において、サービス車両を配送車と呼んでもよい。また、サービス車両のロード(荷物の量)については、各サービス車両において出発時に1で初期化してもよい。
【0022】
アルゴリズム計算部130は、各ノード及び各サービス車両の情報をベースにして、VRP問題を解くことにより、配送計画を出力する。すなわち、アルゴリズム計算部130は、エッジ計算部160で計算したDistance Matrixを特徴量化し、PointerNetworkを使用して、配送計画を生成する。また、ActorCritic強化学習モデルを使用して、最適な配送計画を出力できるように学習を行う。アルゴリズム計算部130の詳細については後述する。
【0023】
図API部140は、地図情報とともに、実際の道路状況(例:道路の渋滞状況、渋滞している場合の通過時間、事故や工事による通行止め情報)をリアルタイムに取得することが可能である。また、地図API部140はアルゴリズム計算部130からの出力(配送計画)に対して、経路検索を行って、例えば各サービス車両の配送計画の経路を地図上に描画する。配車部150は、地図API部140の出力結果に基づいて、それぞれのサービス車両(あるいは、サービスセンターの端末)に対して、サービス経路の情報を、ネットワークを介して配信する。なお、配車部150を「出力部」と呼んでもよい。
【0024】
図API部140は、例えば、外部にある地図サーバにアクセスすることで経路検索等を行うこととしてもよい。また、地図API部140自身が地図データベースを格納し、その地図データベースを用いて経路検索を行うこととしてもよい。
【0025】
一例として、配送計画として、「0→2→3→0」という配送計画がアルゴリズム計算部130により得られたとする。ここで、0はサービスセンターを示し、2、3はそれぞれノードの番号を示す。この場合、地図API部140は、「サービスセンター→顧客2→顧客3→サービスセンター」の実際の道路の経路を地図上に描画し、配車部150が、経路の描画された地図情報を出力する。
【0026】
(アルゴリズム計算部130の構成例)
図2に、アルゴリズム計算部130の構成例を示す。アルゴリズム計算部130は、アクター-クリティック方式の強化学習を行うニューラルネットワークのモデルである。
【0027】
図2に示すとおり、本モデルは、アクターネットワーク131とクリティックネットワーク132の2つにニューラルネットワークを含む。
【0028】
また、アクターネットワーク131は、入力データの埋め込み(特徴量化)を行うためのエンコーダ133を含み、エンコーダ133は、グラフ畳み込み層(Graph convolutional layer)133を含む。グラフ畳み込み層は、ノードとエッジの特徴量を計算する。
【0029】
また、図2のアクターネットワーク131は、ポインタネットワーク(Pointer Networks)を構成する。ポインタネットワークは、エンコーダ133とデコーダ134を有し、エンコーダ133は、入力系列(ノードの情報とエッジの情報)を特徴量に変換し、デコーダ134への入力とする(デコーダが当該特徴量を使用する)。デコーダ134はAttention機構を用いてどの入力を、次の配送先として選択するかを決定する。
【0030】
図2のアクターネットワーク131におけるエンコーダ133は、入力データをh次元ベクトルへ埋め込む埋め込み層と、グラフ畳み込み層(Graph convolutional layer)を有する。前述したとおり、グラフ畳み込み層は、ノードとエッジの特徴量を計算する。
【0031】
グラフ畳み込み層をGCN(Graph Convolutional Network)と呼んでもよい。GCNは、グラフ構造を畳み込むネットワークであり、グラフ構造を持ったデータを入力し、当該データの特徴量を出力する。
【0032】
また、VRPでは、入力データの順序に意味はないため、図2に示す構成において、RNNエンコーダは省略されている。
【0033】
また、学習方法は、非特許文献1に開示されている方法と同様であり、方策勾配法を使用する。当該方策勾配法において、アクターネットワーク131が、ポインタネットワークにより次行動の確率分布を予測し、クリティックネットワーク132が問題インスタンスの報酬を推定する。
【0034】
クリティックネットワーク132は、Dense埋め込み層を有する。クリティックネットワーク132において、入力データからDense埋め込み層により得られた特徴量と、報酬に基づき、損失(Loss function)が得られ、損失を小さくするような学習がなされる。
【0035】
(アルゴリズム計算部130の処理の詳細)
以下、アルゴリズム計算部130の処理内容を詳細に説明する。また、アルゴリズム計算部130への入力に関連して、エッジ計算部160と地図API部140の動作についても説明する。
【0036】
<問題設定>
図3を参照して、本実施の形態における問題設定について説明する。なお、以下で説明するノード(Node)を、顧客(Customer)と呼んでもよい。図3に示すように、ノードの集合が、地図上のある範囲に位置している。図3における各黒丸が、サービス(本実施の形態では荷物の配送)を必要とするノードを示す。また、サービス提供のための荷物(ロード)の積み込み等を行うサービスセンター(荷物の集積所)が存在する。
【0037】
まず、配送車の集合がサービスセンターに配置される。本実施の形態の最適化問題では、サービスセンターから各ノードに配送車を使用して荷物を配送するときに、どの配送車がどのノードをどの順番で回れば最適か(コストが最も低くなるか)を考える。上記のコストは、例えば、配送車の走行距離あるいは配送者の走行時間である。なお、出発地点は、配送車毎に異なっていてもよい。また、配送車毎に、訪問可能なノード(あるいは、訪問不可能なノード)が定められていてもよい。
【0038】
各ノードは、いずれかの配送車により一度だけサービスを受ける。配送車は計画された全てのノードを訪問した後、サービスセンターに戻る。図3においては、3台の配送車が存在し、それぞれが異なる配送経路で配送を行う場合のイメージを示している。
【0039】
サービス車両がサービスを提供する際の条件として、例えば、「サービス車両のロードが0に近く、残りの顧客にサービスを提供する容量(残存するロード)が不十分な場合」に、サービス車両は、サービスセンターに戻らなければならない、といった条件(制約)を用いる。
【0040】
アルゴリズム計算部130は、VRPに対する解ζを見つける。解ζは、サービスの経路又はサービスの順番と解釈できる、ノードの集合χにおける列(シーケンス)である。例えば、解としてζ={0,3,2,0,4,1,0}の列が得られた場合、この列は、二つの経路に対応する。一つは、0→3→2→0に沿って進む経路であり、もう一つは、0→4→1→0に沿って進む経路であり、これは2つのサービス車両が用いられることを暗に示している。また、これは、あるサービス車両が、一旦サービスセンターに戻る場合であると解釈することもできる。
【0041】
<入力データについて>
次に、アルゴリズム計算部130への入力データについて説明する。ノードiの状態(ノード情報)をxと記載すると、xは下記のように表される。tは時間ステップにおける各時刻を示す。
【0042】
:{x =(s,d ), t=0,....,T}
各記号の意味は下記のとおりである。
【0043】
:ノードiの状態
:ノードiの二次元座標(住所)
:ステップtにおけるノードiでの需要(需要はノード毎に異なると想定)
上記の需要は、古典的なVRP問題における需要特徴と同じである。また、ノードはn個あるとする。
【0044】
また、アルゴリズム計算部130へは2つのノード間のエッジ情報eijが入力される。ノードiに関してのエッジ情報eijは、より詳細には下記のように表される。
【0045】
ij:{e ij,t=0,....,T,j=0,....,n}
ここで、eijは、ノードiからノードjまでのサービス車両の移動時間である。ただし、移動時間を使用することは例である。eijとして、ノードiからノードjまでのサービス車両の移動距離を使用してもよい。
【0046】
ijの算出方法に関しては、例えば、地図API部140が、各ノード間の実際の道路状況、あるいは空中から撮影した交通情報等を取得し、エッジ計算部160が、実際の道路状況等の情報を利用して、各eijを算出する。なお、eijとejiは異なる。また、実際の道路状況は時刻tにより変化するので、e ijは、時刻tにより変化し得る。なお、以降、以降eijをeijと表す場合がある。
【0047】
<アクターネットワーク131>
VRPの解ζは列(シーケンス)のマルコフ決定過程(MDP)であり、これは、列内の次の行動(つまり、次にどのノードをサービス対象とするか)を選択する過程である。
【0048】
本実施の形態では、MDPプロセスの定式化にポインタネットワーク(PointerNet)を使用する。なお、ポインタネットワーク(PointerNet)自体は既存技術である。
【0049】
最初に、エンコーダ133が、ノード情報とエッジ情報に対して特徴量化を行う。続いて、デコーダ134は、1つずつ接続されるRNNセルを使用することによって、MDPの行動を復元する。RNNセルへは、ノードの位置情報(s)が入力される。以下、エンコーダ133とポインタネットワークについて、より具体的に説明する。
【0050】
まず、エンコーダ133における埋め込み層が、各ノードiの特徴として、各ノードの2次元座標s∈[0,1]について、下記のとおり、h次元の特徴量への埋め込みを行う。
【0051】
α=A+b
また、埋め込み層は、エッジの値eijについて、下記のとおり、h次元の特徴量への埋め込みを行う。
【0052】
βij=Aij+b
ここで、A∈Rh×2、A∈Rh×1、である。
【0053】
次に、エンコーダ133におけるグラフ埋め込み層が、下記の式により、レイヤーl(lはLの小文字である)におけるノード特徴量 とエッジ特徴量ij を算出する。なお、本明細書のテキストにおいて、記載の便宜上、文字の頭に記載する記号を、文字の左上に記載している。「x」はその例である。
【0054】
レイヤー数に応じて、下記の式を繰り返し適用することで、ノード特徴量 とエッジ特徴量ij を算出する。レイヤー数については予め定めた値を使用することができる。
【0055】
【数1】
【0056】
【数2】
ここで、W∈Rh×h l=0=αij l=0=βij、である。また、ηij は、dense attention mapであり、グラフ上での異方性(方向に依存)の情報を含む。図4は、レイヤーlの特徴量からレイヤーl+1の特徴量を求めるイメージを示している。すなわち、レイヤーl+1のノードiの特徴量は、「レイヤーlのノードiの特徴量、レイヤーlのノードiに隣接する隣接ノードの特徴量、レイヤーlのノードiと隣接ノードとの間のエッジの特徴量」から得られる。また、レイヤーl+1のエッジijの特徴量は、「レイヤーlのノードiの特徴量、レイヤーlのノードjの特徴量、レイヤーlのエッジijの特徴量」から得られる。
【0057】
デコーダ134はRNNセル(例:LSTMセル)のシーケンスを含む。当該デコーダ134において、RNNセルのシーケンスを用いてMDPにおける行動(アクション)をモデル化する。デコーダの各ステップt∈(0,1,…,T)において、RNNセルにおける隠れ状態をhで表す。Tはデコーダステップの総数である。
【0058】
本実施の形態において、アテンション機構によりポインタyt+1を計算することによりサービス順序をモデル化する。すなわち、デコーダ134の各ステップtにおいて、どのノードがポイントされるかを決定する。なお、ここでのアテンション機構の動作は、使用する特徴量の違いを除けば、非特許文献1に開示されているアテンション機構の動作と基本的には同じである。
【0059】
具体的には、ステップtにおいて、aを下記のようにsoftmaxにより計算する。aは、各入力データ(各ノード)が、ステップtにおいてどのくらい関連しているのか(配送先として適切であるのか)を示す。
【0060】
=a ,h)=softmax(u
=v tanh(W ;h])
は、GCNによる埋め込み後の特徴量であり、ノードiの、隣接エッジの特徴量である。 は、前述したij のステップtにおける値である。hは、前述したとおり、ステップtにおけるRNNセルの隠れ状態である。
【0061】
続いて、デコーダ134において、下記の式により、コンテキストベクトルcを算出する。
【0062】
【数3】
次に、デコーダ134において、下記の式のとおり、c を組み合わせて を求め、値を正規化し、次に選ばれるノード(yt+1)の条件付き確率P(yt+1|Y,E)を計算する。なお、正規化するとは、全ての入力ノードに対する確率分布を求めることに相当する。
【0063】
P(yt+1|Y,E)=softmax(
=v tanh(W ;c])
上記の式において、Yは、tまでの選択されたノードのシーケンスであり、Eは、tにおける入力データのGCN後のエッジ特徴量(eのシーケンス)である。v、v、W、Wはいずれも学習可能なパラメータである。上述した計算の処理イメージを図5に示す。
【0064】
また、アルゴリズム計算部130のアクターネットワーク131において、例えば、非特許文献1に開示されたマスキング技術を使用したマスキング部を備えてもよい。例えば、マスキング部は、配送車の残積載量が0である場合には、全てのノードをマスクする(つまり、どこにも配送しないようにする)。また、マスキング部は、例えば、現在の配送車の積載量(ロード)よりも大きい需要を持つノードをマスクする(つまり、当該ノードには配送しないようにする)。なお、配送車の積載量は、ノードへの荷物配送を行う度に、その荷物の量だけ減少される。
【0065】
<アクター‐クリティック>
本実施の形態では、ポリシー(方策)と価値関数の両方を同時に学習するために、アクター‐クリティックに基づく深層強化学習を使用している。なお、VRPに、アクター‐クリティックに基づく手法を用いること自体は、例えば非特許文献1に記載のように、既存技術である。ただし、本実施の形態における報酬の計算は、非特許文献1に開示されたものとは異なる。
【0066】
アクターネットワーク131における学習可能なパラメータ(重み)をθactorと表すことにする。
【0067】
本実施の形態では、θactorを用いて、確率的(stochastic)ポリシーπをパラメトライズしている。確率的ポリシーπにより、任意の所与のデコーダステップtで次の行動(どのノードに訪問するか)に対する確率分布を生成する。
【0068】
一方、学習可能なパラメータθcriticを持つクリティックネットワーク132は、強化学習における与えられた状態から任意の問題インスタンスに対する勾配を推定する。
【0069】
クリティックネットワーク132は、例えば、3つのDense層からなり、報酬を予測する。本実施の形態では、アクターネットワーク131の出力確率を重みとして使用し、埋め込まれた入力(Dense層からの出力)の加重和を計算することで、単一値を出力する。これは、クリティックネットワーク132によって予測される価値関数の出力と解釈できる。
【0070】
図6に、アルゴリズム計算部130が実行するアクター‐クリティックの処理(アルゴリズム)の例を示す。
【0071】
第1行において、アクターネットワークをランダムな重みθactorで初期化し、クリティックネットワークをランダムな重みθcriticで初期化する。第2行及び第17行は、第3行~第16行を各エポックで繰り返すことを意味する。
【0072】
第3行において、パラメータの勾配であるdθactorと、dθcriticをそれぞれ0にリセットする。第4行において、現在のθactorを持つアクターネットワークに従ってB個のインスタンスをサンプルする。第5行及び第14行は、Bにおける各サンプルについて、第6行~第13行を繰り返すことを意味する。
【0073】
第6行において、現在の重みに基づき、埋め込み処理(グラフ埋め込み等)を行って、特徴量を得る。第7行及び第12行は、各デコーダステップt∈(1,2,…,T)において、第8行~第11行を繰り返すことを意味する。第8行は、終了条件を満たす限り、第9行~第11行を繰り返すことを意味する。
【0074】
第9行において、分布p(y)に基づき、yを計算する。yは、第tステップにおいて、サービス対象(訪問先)となるノードを示す。
【0075】
第10行において、新しい状態の列y,…,yt-1,yを観測する。第11行において、tをt+1で更新する。
【0076】
第13行において、報酬Rを算出する。第15行において、下記の式によるポリシー勾配∇θactorを計算し、θactorを更新する。第16行において、勾配∇θcriticを計算し、θcriticを更新する。
【0077】
【数4】
ここで、Rはサービング経路を示すyの列に対する報酬である。V(χ;θcritic)は、全てのraw入力(χ)に対する報酬を予測する価値関数である。「R-V(χ;θcritic)」は、従来の強化学習に基づくVRP法の累積報酬に代わるアドバンテージ関数として用いられている。アクターークリティックにおいて、アドバンテージ関数を使用する手法自体は既存技術である。
【0078】
図6に示した、本実施の形態におけるアクター‐クリティックのアルゴリズムは、学習プロセス(training process)を示している。この学習プロセスの後、テスト(実際の配送計画出力)を行うこととしてもよいし、学習を進めながらテストを行うこととしてもよい。図6に示した処理をまとめると下記のとおりである。
【0079】
アクターネットワークの現在の重みθactorを有する各学習の繰り返しにおいて、B個のサンプルを取得し、モンテカルロシミュレーションを用いて、現在のポリシーに基づいて実現可能性のある列(シーケンス)を生成する。これは、デコーダの各ステップにおいて、アクターネットワークの出力である分布p(y)に基づいて、ポインタyを確率的に計算することを意味する。
【0080】
サンプリングが終了すると、報酬とポリシーの勾配を計算し、第15行においてアクターネットワークを更新する。
【0081】
また、第16行において、観察された報酬と期待される報酬との差を小さくする方向にクリティックネットワークを更新する。最後に、エンドツーエンドの方法で同じ学習速度で、勾配dθactorと勾配dθcriticを用いてθactorとθcriticを更新する。
【0082】
次に、報酬について説明する。本実施の形態では、エッジ計算部160により計算した値eijを用いて、移動のコスト(移動した総距離、又は、移動にかかった総時間)に基づいた報酬関数を使用する。また、具体的な利用ケースに応じて、報酬関数をカスタマイズしてもよい。例えば、移動に時間制限(時間枠)がある場合に、時間制限を超えた時間がかかった場合に、ペナルティ値を加えるペナルティ項が含まれていてもよい。
【0083】
(ハードウェア構成例)
配送計画装置100は、例えば、コンピュータにプログラムを実行させることにより実現できる。このコンピュータは、物理的なコンピュータであってもよいし、クラウド上の仮想マシンであってもよい。
【0084】
すなわち、配送計画装置100は、コンピュータに内蔵されるCPUやメモリ等のハードウェア資源を用いて、配送計画装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【0085】
図7は、上記コンピュータのハードウェア構成例を示す図である。図7のコンピュータは、それぞれバスBSで相互に接続されているドライブ装置1000、補助記憶装置1002、メモリ装置1003、CPU1004、インタフェース装置1005、表示装置1006、入力装置1007、出力装置1008等を有する。
【0086】
当該コンピュータでの処理を実現するプログラムは、例えば、CD-ROM又はメモリカード等の記録媒体1001によって提供される。プログラムを記憶した記録媒体1001がドライブ装置1000にセットされると、プログラムが記録媒体1001からドライブ装置1000を介して補助記憶装置1002にインストールされる。但し、プログラムのインストールは必ずしも記録媒体1001より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置1002は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0087】
メモリ装置1003は、プログラムの起動指示があった場合に、補助記憶装置1002からプログラムを読み出して格納する。CPU1004は、メモリ装置1003に格納されたプログラムに従って、配送計画装置100に係る機能を実現する。具体的には例えば、図6に示す手順における状態の更新の計算、更新後のデータのメモリ装置1003への格納、次の時間ステップのための更新後のデータのメモリ装置1003からの読み出し、重み更新計算等を実行する。
【0088】
インタフェース装置1005は、ネットワーク等に接続するためのインタフェースとして用いられる。表示装置1006はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置1007はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。出力装置1008は演算結果を出力する。
【0089】
(実施の形態のまとめ、効果)
以上説明したように、本実施の形態に係る技術では、ノードの位置(座標)を計算するだけでなく、エッジの情報を含んだグラフデータを構造化し、構造化したデータ(例:Distance matrix)に対して、GCNを用いて、特徴量化を行う。そして、ポインタネットワークを有するアクターークリティックのニューラルネットワークモデルを用いて、VRP問題を解くこととしている。
【0090】
上記のように、エッジの情報を用いることで、実際の移動時間あるいは実際の移動距離(空中での飛ぶ軌跡や道路上の渋滞交通情報)を考慮して、VRP問題の最適解を得ることができる。また、移動途中に外部状況が変化した場合(例:飛行経路や道路が急に通行止めになるなどの場合)でも、再計画に対応できる。
【0091】
また、本実施の形態に係る技術により、従来技術(例:非特許文献1)のようにノードの座標のみを特徴量として使用する方式と比較して、GCNによりノード情報とエッジ除法をうまく特徴量化できるので、学習効率が向上し、収束速度が早くなる。これにより、学習時間を削減することができる。
【0092】
本実施の形態に係る技術により、推論フェーズと再計画時において実際の交通状況等を考慮しても、瞬時に近似解を見つけることができので、実用的なビジネスアプリケーションにおける実行効率を大幅に改善することができる。
【0093】
(付記)
本明細書には、少なくとも下記各項の配送計画装置、配送計画方法、及びプログラムが開示されている。
(付記項1)
複数のノードにおけるノードの組ごとに、ノード間の移動時間又は移動距離であるエッジ情報を算出するエッジ計算部と、
アクター‐クリティック方式による強化学習を行うニューラルネットワークを用いて、ある場所から出発する移動体により前記複数のノードに対してサービス提供を行うための経路を決定する配送計画問題を解くアルゴリズム計算部と、を備え、
前記アルゴリズム計算部は、前記エッジ計算部により得られた前記エッジ情報に関する特徴量を用いて、前記配送計画問題を解く
配送計画装置。
(付記項2)
前記配送計画装置は、地図API部を更に備え、
前記エッジ計算部は、前記地図API部により取得した道路状況に基づいて、前記エッジ情報を算出する
付記項1に記載の配送計画装置。
(付記項3)
前記アルゴリズム計算部は、前記エッジ情報を用いて前記特徴量を計算するグラフ畳み込み層を有する
付記項1又は2に記載の配送計画装置。
(付記項4)
前記アルゴリズム計算部は、アテンション機構を含み、前記アテンション機構は、前記特徴量を用いて、各ノードが配送先として選択される確率を計算する
付記項1ないし3のうちいずれか1項に記載の配送計画装置。
(付記項5)
コンピュータが実行する配送計画方法であって、
複数のノードにおけるノードの組ごとに、ノード間の移動時間又は移動距離であるエッジ情報を算出するエッジ計算ステップと、
アクター‐クリティック方式による強化学習を行うニューラルネットワークを用いて、ある場所から出発する移動体により前記複数のノードに対してサービス提供を行うための経路を決定する配送計画問題を解くアルゴリズム計算ステップと、を備え、
前記アルゴリズム計算ステップにおいて、前記エッジ計算ステップにより得られた前記エッジ情報に関する特徴量を用いて、前記配送計画問題を解く
配送計画方法。
(付記項6)
コンピュータを、付記項1ないし4のうちずれか1項に記載の配送計画装置における各部として機能させるためのプログラムを記憶した非一時的記憶媒体。
【0094】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0095】
100 配送計画装置
110 ノード情報収集部
120 サービス車両情報収集部
130 アルゴリズム計算部
131 アクターネットワーク
132 クリティックネットワーク
133 エンコーダ
134 デコーダ
140 地図API
150 配車部
1000 ドライブ装置
1001 記録媒体
1002 補助記憶装置
1003 メモリ装置
1004 CPU
1005 インタフェース装置
1006 表示装置
1007 入力装置
1008 出力装置
図1
図2
図3
図4
図5
図6
図7