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

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

▶ ボッシュ株式会社の特許一覧

特開2023-104708データ処理装置、方法及びプログラム
<>
  • 特開-データ処理装置、方法及びプログラム 図1
  • 特開-データ処理装置、方法及びプログラム 図2
  • 特開-データ処理装置、方法及びプログラム 図3
  • 特開-データ処理装置、方法及びプログラム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023104708
(43)【公開日】2023-07-28
(54)【発明の名称】データ処理装置、方法及びプログラム
(51)【国際特許分類】
   G06Q 10/047 20230101AFI20230721BHJP
【FI】
G06Q10/04 310
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022005864
(22)【出願日】2022-01-18
(71)【出願人】
【識別番号】000003333
【氏名又は名称】ボッシュ株式会社
(72)【発明者】
【氏名】中里 研一
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA04
(57)【要約】
【課題】ルート探索の効率化。
【解決手段】データ処理装置(1)は、複数の地点を訪問するルートを強化学習により探索する。データ処理装置(1)は、価値関数に基づいて前記ルートを探索する計算部(121)と、前記価値関数の損失関数が最小化するように前記価値関数を更新する更新部(122)と、を備える。前記価値関数は、前記各地点の訪問状態に対して推定される、次に訪問すべき各地点の価値を出力する。前記計算部(121)は、前記価値関数からの出力値が大きい地点へと移動する前記ルートを探索する。前記更新部(122)は、前記価値関数からの出力値が予め与えられた移動条件を満たさない場合、ペナルティ値を前記損失関数に加えて前記価値関数を更新する。
【選択図】図1

【特許請求の範囲】
【請求項1】
複数の地点を訪問するルートを強化学習により探索するデータ処理装置(1)において、
価値関数に基づいて前記ルートを探索する計算部(121)と、
前記価値関数の損失関数が最小化するように前記価値関数を更新する更新部(122)と、を備え、
前記価値関数は、前記各地点の訪問状態に対して推定される、次に訪問すべき各地点の価値を出力し、
前記計算部(121)は、前記価値関数からの出力値が大きい地点へと移動する前記ルートを探索し、
前記更新部(122)は、前記価値関数からの出力値が予め与えられた移動条件を満たさない場合、ペナルティ値を前記損失関数に加えて前記価値関数を更新する
データ処理装置(1)。
【請求項2】
前記価値関数は、ニューラルネットワーク(50)により近似され、
前記更新部(122)は、前記ニューラルネットワーク(50)の出力層(53)から出力された前記出力値であって、正規化される前の前記出力値が、前記移動条件を満たすか否かを判定する
請求項1に記載のデータ処理装置(1)。
【請求項3】
前記移動条件は、訪問すべき地点の順位又は位置に関する優先条件を含む
請求項1又は2に記載のデータ処理装置(1)。
【請求項4】
前記移動条件は、移動時の空間的な制約条件を含む
請求項1~3のいずれか一項に記載のデータ処理装置(1)。
【請求項5】
複数の地点を訪問するルートを強化学習により探索する方法において、
価値関数に基づいて前記ルートを探索するステップと、
前記価値関数の損失関数が最小化するように前記価値関数を更新するステップと、を含み、
前記価値関数は、前記各地点の訪問状態に対して推定される、次に訪問すべき各地点の価値を出力し、
前記ルートを検索するステップは、前記価値関数からの出力値が大きい地点へと移動する前記ルートを探索するステップを含み、
前記更新するステップは、前記価値関数からの出力値が予め与えられた移動条件を満たさない場合、ペナルティ値を前記損失関数に加えて前記価値関数を更新するステップを含む
方法。
【請求項6】
複数の地点を訪問するルートを探索する方法をコンピュータに実行させるためのプログラムであって、
前記方法は、
価値関数に基づいて前記ルートを探索するステップと、
前記価値関数の損失関数が最小化するように前記価値関数を更新するステップと、を含み、
前記価値関数は、前記各地点の訪問状態に対して推定される、次に訪問すべき各地点の価値を出力し、
前記ルートを検索するステップは、前記価値関数からの出力値が大きい地点へと移動する前記ルートを探索するステップを含み、
前記更新するステップは、前記価値関数からの出力値が予め与えられた移動条件を満たさない場合、ペナルティ値を前記損失関数に加えて前記価値関数を更新するステップを含む
プログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、方法及びプログラムに関する。
【背景技術】
【0002】
巡回セールスマン問題(TSP:Traveling Salesman Problem)は、セールスマンが複数の都市を1回ずつ訪れるとき、どのような順番で巡回すれば総移動コストを最小にできるかを問う問題である。巡回セールスマン問題は、古典的な最適化問題として知られ、商品の配送ルート等の探索に応用されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-022295号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
巡回セールスマン問題のような組み合わせ最適化問題は、組み合わせ数が膨大であることが一般的である。計算量が増え、ルート探索に時間がかかりやすい。その一方で、ルート探索においては、ある都市はある都市よりも優先して訪問した方がよいといったような経験知がすでに存在することがある。このような部分的な経験知はルート探索の指針となりやすい。
【0005】
本発明は、ルート探索の効率化を目的とする。
【課題を解決するための手段】
【0006】
本発明の一態様は、複数の地点を訪問するルートを強化学習により探索するデータ処理装置(1)である。前記データ処理装置(1)は、価値関数に基づいて前記ルートを探索する計算部(121)と、前記価値関数の損失関数が最小化するように前記価値関数を更新する更新部(122)と、を備える。前記価値関数は、前記各地点の訪問状態に対して推定される、次に訪問すべき各地点の価値を出力する。前記計算部(121)は、前記価値関数からの出力値が大きい地点へと移動する前記ルートを探索する。前記更新部(122)は、前記価値関数からの出力値が予め与えられた移動条件を満たさない場合、ペナルティ値を前記損失関数に加えて前記価値関数を更新する。
【0007】
本発明の他の一態様は、複数の地点を訪問するルートを強化学習により探索する方法である。前記方法は、価値関数に基づいて前記ルートを探索するステップと、前記価値関数の損失関数が最小化するように前記価値関数を更新するステップと、を含む。前記価値関数は、前記各地点の訪問状態に対して推定される、次に訪問すべき各地点の価値を出力する。前記ルートを検索するステップは、前記価値関数からの出力値が大きい地点へと移動する前記ルートを探索するステップを含む。前記更新するステップは、前記価値関数からの出力値が予め与えられた移動条件を満たさない場合、ペナルティ値を前記損失関数に加えて前記価値関数を更新するステップを含む。
【0008】
本発明の他の一態様は、複数の地点を訪問するルートを探索する方法をコンピュータに実行させるためのプログラムである。前記方法は、価値関数に基づいて前記ルートを探索するステップと、前記価値関数の損失関数が最小化するように前記価値関数を更新するステップと、を含む。前記価値関数は、前記各地点の訪問状態に対して推定される、次に訪問すべき各地点の価値を出力する。前記ルートを検索するステップは、前記価値関数からの出力値が大きい地点へと移動する前記ルートを探索するステップを含む。前記更新するステップは、前記価値関数からの出力値が予め与えられた移動条件を満たさない場合、ペナルティ値を前記損失関数に加えて前記価値関数を更新するステップを含む。
【発明の効果】
【0009】
本発明によれば、ルート探索の効率化が可能である。
【図面の簡単な説明】
【0010】
図1】データ処理装置の構成を示す図である。
図2】ルート探索処理のフローチャートである。
図3】与えられた複数の地点の一例を示す図である。
図4】ニューラルネットワークの一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明のデータ処理装置、方法及びプログラムの実施の形態について、図面を参照して説明する。以下に説明する構成は本発明の一例(代表例)であり、本発明はこの構成に限定されない。
【0012】
図1は、本実施形態のデータ処理装置1の構成を示す。
データ処理装置1は、制御部11、ルート探索部12及び記憶部13を備える。データ処理装置1は、操作部14、表示部15及び通信部16をさらに備えることができる。
【0013】
制御部11は、データ処理装置1の各部を制御する。例えば、制御部11は、操作部14の操作又は通信部16により受信した指示データに応じて、ルート探索部12にルートを探索させることができる。また制御部11は、ルートの探索結果を表示部15に表示させることができる。
【0014】
ルート探索部12は、複数の地点を訪問するルートを強化学習により探索する。ルート探索部12は、計算部121と更新部122とを備える。計算部121は、価値関数に基づいてルートを探索する。更新部122は、価値関数の損失関数が最小化するように価値関数を更新する。
【0015】
本実施形態においては、制御部11及びルート探索部12の処理は、CPU(Central Processing Unit)又はGPU(Graphic Processing Unit)のようなプロセッサ、マイクロコンピュータのようなコンピュータが、記憶部13からプログラムを読み出して実行することにより実現されるソフトウェア処理である。当該処理は、ASIC又はFPGAのようなハードウェアによって実現されてもよい。
【0016】
記憶部13は、上記コンピュータが読み取り可能なプログラム、及びプログラムの実行に用いられるテーブル等を記憶する。また記憶部13は、ルート探索において予め与えられた地点及び環境の情報や移動条件の情報等を記憶する。記憶部13としては、例えばハードディスク等の記録媒体を用いることができる。
【0017】
操作部14は、キーボード又はマウス等である。操作部14は、ユーザの操作を受け付けて、その操作内容を制御部11に出力する。
【0018】
表示部15は、ディスプレイ等である。表示部15は、制御部11からの表示指示にしたがって、操作画面や制御部11の処理結果、ルート探索部12の探索結果等を表示する。
【0019】
通信部16は、ネットワークを介して外部のコンピュータと通信するインターフェイスである。
【0020】
図2は、ルート探索部12が実行するルート探索処理の流れを示す。
ルート探索処理において、データ処理装置1には巡回すべき複数の地点を含む環境、各地点への移動条件等の情報が予め与えられる。当該情報は、通信部16を介して外部のコンピュータから送信されてもよいし、操作部14を介して入力されてもよい。与えられた情報は記憶部13に保存され、ルート探索部12は記憶部13から当該情報を取得できる。
【0021】
図3は、与えられた環境の例を示す。当該環境は6×4ブロックからなり、4つの地点Ki(i=0,1,2,3)を含む。本実施形態において、ルート探索部12は、エージェント30がスタート地点Psから移動を開始し、各地点K0~K3を1回ずつ訪問する巡回ルートであって、エージェント30の総移動コストが最小となる巡回ルートを探索する。移動コストとは、例えば移動に要する距離、時間又は費用等である。
【0022】
まず計算部121が、与えられたn個の地点Ki(i=0,1,・・・,n)の訪問状態sを記憶部13に保存する(ステップS1)。訪問状態sのデータは、未訪問の場合は0、訪問済みの場合は1、現在訪問中の場合は2に設定される。図3の例において、地点K0が訪問中、地点K1及びK2が未訪問、地点K4が訪問済みであるとき、s={2,0,0,1}と表される。
【0023】
次いで、計算部121は、価値関数Vを定義する(ステップS2)。価値関数Vは、各地点の訪問状態sに対して、次に訪問すべき地点の価値を推定する状態価値関数である。
【0024】
例えば、価値関数Vは下記式(1)に示すように定義される。なお、各地点の訪問状態sに対して次に訪問すべき各地点の価値を推定できるのであれば、価値関数Vは式(1)に限定されず、目的のルート探索に合わせて適宜設計可能である。
【数1】
【0025】
は時間ステップtにおける各地点の訪問状態を表し、st+1は次の時間ステップt+1における各地点の訪問状態を表す。E[]は、[]内の期待値を表す。γは割引率を表し、0<γ≦1を満たす。rは報酬を表し、報酬関数によって与えられる。報酬関数は、巡回ルートの総移動コストが小さいほど高い報酬を出力する。例えば巡回ルートの総移動距離(エージェント30が移動した総ブロック数)の逆数を報酬として出力する関数が、報酬関数として環境とともに与えられる。
【0026】
計算部121は、上記価値関数Vをニューラルネットワークにより近似する。図4は、価値関数Vを近似するニューラルネットワーク50の例を示す。ニューラルネットワーク50は、入力層51、隠れ層52、出力層53及び正規化層54を備える。入力層51、隠れ層52及び出力層53は複数のノード55を備え、隣り合う層のノード55同士はエッジ56によって結合されている。図4中の隠れ層52は1層であるが、複数の隠れ層52があってもよい。
【0027】
各地点の訪問状態sは、入力層51の各ノード55に入力され、エッジ56により結合された隠れ層52の各ノード55へと出力される。隠れ層52のノード55では、各入力値に重みが乗算され、その和にバイアスが加算されて、出力層53の各ノード55に出力される。出力層53でも隠れ層52と同様にして入力値から出力値Viが計算される。
【0028】
正規化層54では、softmax関数又はRelu関数のような正規化関数によって各出力値Viが正規化され、出力値Vniが出力される。softmax関数の場合、各出力値Vniの和が1であり、例えば地点K0の価値Vn0が0.9、地点K1の価値Vn1が0.08のような出力値Vniが出力される。
【0029】
次いで、計算部121は、上記価値関数Vに基づいて巡回ルートを探索する(ステップS3)。具体的には、計算部121は、ある方策π(s)にしたがってエージェント30の行動を選択する。例えば、計算部121は、左右上下のいずれかのブロックへ移動する行動を選択する。行動の選択を繰り返すことにより、エージェント30は1ブロックずつ移動する。
【0030】
探索開始時、エージェント30の現在位置はスタート地点Psであり、このときの訪問状態sは、s={0,0,0,0}である。計算部121は、エージェント30が行動するごとに訪問状態sを更新するが、訪問状態sが変化するのはエージェント30がある地点Kiに到達したときである。例えば、図3においてエージェント30がスタート地点Psから地点K0に到達すると、s={2,0,0,0}に変化する。地点K0を離れると、s={1,0,0,0}に変化する。
【0031】
エージェント30がすべての地点Kiを訪問し終えて、s={1,1,1,1}の訪問状態sに至ると、計算部121は探索を終了する。スタート地点Psから最後の地点までの一連の行動をエピソードという。その間にエージェント30が移動した軌跡が、1つのエピソードで探索された巡回ルートとなる。
【0032】
探索が終了すると、更新部122は価値関数Vの損失関数L、つまり価値関数Vを近似するニューラルネットワークの損失関数Lを計算する(ステップS4)。下記式(2)は価値関数Vの損失関数Lの一例を示す。損失関数Lはこれに限らず、適宜設計可能である。
【数2】
【0033】
θは価値関数Vを近似するニューラルネットワーク50のパラメータを表す。パラメータは、例えば各ノード55での計算に使用される重み又はバイアス等である。maxは、訪問状態s(i)における価値関数Vからの出力値Vniのうち、最大値を出力するmax関数を表す。
【0034】
次いで、更新部122は、価値関数Vからの出力値Viが予め与えられた移動条件を満たすか否かを判定する(ステップS5)。移動条件が満たされる場合(ステップS5:YES)、更新部122は、上記損失関数Lが小さくなるように価値関数Vを更新する(ステップS7)。更新部122は、更新された価値関数Vによって方策πを更新する。
【0035】
更新により、各訪問状態sにおける価値関数Vからの出力値Vniが高い地点Kiに遷移するように、方策πが最適化される。最適化された方策πにしたがって行動を選択することにより、各地点Kiを順に1回ずつ訪問するルートであって、総移動コストが小さいルートが探索される。
【0036】
移動条件が満たされない場合(ステップS5:NO)、更新部122はペナルティ値A1を損失関数Lに加え(ステップS6)、その後に損失関数Lが小さくなるように価値関数Vを更新する(ステップS7)。下記式(2a)はペナルティ値A1が加算された損失関数Lの一例を示す。
【数3】
【0037】
本実施形態において、移動条件は訪問すべき地点の順位に関する条件であり、当該順位は経験知として予め与えられる。例えば、i=mの地点からはi=jの地点よりもi=kの地点を先に訪問した方が効率的であることが経験的に知られている場合、順位に関する条件としてVk>Vjが与えられる。
【0038】
更新部122は、i=mの地点を訪問済みの訪問状態sに対して、ニューラルネットワーク50の出力層53から出力された後、正規化層54において正規化される前の出力値Viを取得する。更新部122は、取得した出力値Viが上記Vk>Vjの順位の条件を満たさない場合、ペナルティ値A1を損失関数Lに加える。
【0039】
例えば、更新部122は、下記式(3a)に示すようなペナルティ値A1を損失関数Lに加えることができる。
【数4】
【0040】
あるいは、下記式(3b)に示すようなペナルティ値A1が使用されてもよい。
【数5】
Reluは、()内の入力値が0以下の場合には出力値が常に0であり、入力値が0より大きい場合には出力値が入力値と同じ値となるランプ関数を表す。
【0041】
上記式(3a)によれば、Vk>Vjの条件が満たされない場合、ペナルティ値A1が0より大きくなる。また上記式(3b)によれば、Vk>Vjの条件が満たされる場合はペナルティ値A1が0となり、Vk>Vjの条件が満たされない場合はペナルティ値A1が0より大きくなる。
【0042】
よって、上記ペナルティ値A1の加算により損失関数Lの誤差が拡大する。ニューラルネットワーク50のパラメータθは誤差を縮小する方向に更新されるため、Vk>Vjの条件が満たされるように価値関数Vが最適化される。
【0043】
更新部122は、正規化される前の出力値Viではなく、正規化された後の出力値Vniが上記順位の条件を満たすか否かを判定してもよいが、正規化される前の出力値Viによって移動条件が満たされるかを判定する方が、判定精度が高く好ましい。
【0044】
価値関数Vが更新されると、計算部121は更新された価値関数Vによって方策πを更新する(ステップS8)。下記式(4)は方策πの更新式を示すが、方策πの更新式はこれに限定されず、目的のルート探索に合わせて適宜設計可能である。
【数6】
argmaxは、argmax[f(x)]においてf(x)が最大となるときのxの集合を出力する関数を表す。
【0045】
価値関数Vの更新により、移動条件を満たす地点は、移動条件を満たさない地点よりも価値関数Vからの出力値Viが大きくなる。よって、移動条件を満たす地点を次に訪問すべき地点として当該地点へ移動する行動が、方策πによって選択されやすくなる。
【0046】
所定数のエピソードが終了していない場合は(ステップS9:NO)、ステップS3の処理に戻って次のエピソードを繰り返す。何度もエピソードを繰り返し、価値関数V及び方策πを反復して更新することにより、探索されるルートは、与えられた移動条件を満たすように各地点Kiを1回ずつ訪問するように移動し、かつその総移動コストが小さいルートへと最適化されていく。そして、所定数のエピソードが終了すると(ステップS9:YES)、本処理が終了する。
【0047】
なお方策πを更新するタイミングは、適切なタイミングであれば、上記のように1エピソードごとに限られない。例えば、方策πを更新するタイミングは、複数エピソードごとであってもよいし、訪問状態sが遷移するごとであってもよい。またエージェント30を移動させる方法も、価値関数Vを最大にするように移動する方法、価値関数Vの出力値に応じて確率的に移動する方法、又は時折ランダムに移動するε-greedy法等の公知の方法を採用することができる。
【0048】
以上のように、本実施形態によれば、各地点の訪問状態sに対して、次に訪問すべき各地点Kiの価値を推定する価値関数Vが、計算部121によって定義される。計算部121は、価値関数Vからの出力値Vniが大きい地点Kiに移動するルートを探索する。
【0049】
更新部122は、上記価値関数Vをその損失関数Lが最小化するように更新するが、価値関数Vからの出力値Viが経験知として予め与えられた移動条件を満たさない場合は、損失関数Lにペナルティ値A1を加えて価値関数Vを更新する。
【0050】
これにより、移動条件を満たさない地点の出力値Viは満たす地点よりも小さくなる。次の地点として移動条件を満たす地点に向かって移動する行動が選択されやすくなるため、移動コストが小さいだけでなく、経験知に準拠した巡回ルートの探索が可能である。部分的な経験を移動方針としてルートが探索されるため、探索の効率を向上させることができる。経験知も、ペナルティ値A1の加算という簡単な処理によって容易に方策πに反映させることができる。
【0051】
本実施形態のルート探索は、例えば倉庫の収納棚から商品をピッキングするルート、商品を配送するルート等の物流の分野において好適に利用することができる。物流に限らず、建設現場で資材を搬送するルート、盛土の造成現場で土を搬送するルート等の様々なルートの探索に利用可能である。
【0052】
また上記ルート探索は、各地点を作業に置き換えれば、どの作業をどのような順序で行うのか、作業の手順の最適化にも応用することができる。例えば、料理には、材料を切る、調味料を加える、時間を置く、煮る、料理器具を洗う等の作業があるが、最短で料理を完成できるこれらの作業の順番を探索することができる。また部品Aに部品Bを接着する、部品Cを部品Aと嵌合する等の製品の組み立て手順等においても、効率が良い手順の探索が可能である。
【0053】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されない。
【0054】
(変形例1)
移動条件は、各地点の位置に関する条件であってもよい。例えば、現在の地点に近い地点があるにも関わらず遠い地点を訪問しようとすると遠回りになる。これを経験知として、例えばi=mの地点はi=jの地点と近く、i=kの地点と遠い位置関係にある場合、Vj>Vkの条件が与えられる。更新部122は、i=mの地点を訪問済みの訪問状態sに対する価値関数Vの出力値Viがこの条件を満たさない場合、損失関数Lにペナルティ値A1を加算することができる。
【0055】
(変形例2)
移動条件は、上記順位又は位置のように優先すべき条件に限らず、制約条件であってもよい。制約条件としては、例えば各地点間にエージェント30の進行を阻む障害物があるか、ルートが一方通行である等の移動時の空間的な制約条件が挙げられる。更新部122は、この制約条件が満たされない場合、損失関数Lにペナルティ値A2を加算することができる。
【0056】
例えば、i=jの地点Kjからは進入できないエリアがあり、当該エリアにi=kの地点Kkが位置する場合、maxVi≠Vkの条件が与えられる。i=jの地点を訪問済みの訪問状態sに対する価値関数Vからの出力値Viのうち、地点Kjの出力値Vjが最大である場合、つまりmaxVi=Vkである場合、与えられた移動条件を満たさないため、損失関数Lにペナルティ値A2が加算される。このときのペナルティ値A2としては、例えばA2=|Vk|又はA2=|Vk|を用いることができる。
【0057】
ペナルティ値A2の加算により損失関数Lの誤差が拡大する。当該誤差を最小化するように、つまり地点Kkの出力値Vkが他の地点より小さくなるように価値関数Vが更新されていくため、地点Kjから地点Kkに向かって移動する行動が選択されにくくなる。なお、制約条件を満たさない場合のペナルティ値A2は、優先条件を満たさない場合のペナルティ値A1の代わりに加算されてもよいし、両方が加算されてもよい。
【符号の説明】
【0058】
1・・・データ処理装置、12・・・ルート探索部、121・・・計算部、122・・・更新部、13・・・記憶部
図1
図2
図3
図4