(57)【要約】【課題】状態から行動を得る直列接続された複数の学習対象の行動の最適化を図ること。【解決手段】状態から行動を得る複数の学習対象により構成された学習対象群について各学習対象の行動を学習する学習システムは、第１コントローラと第２コントローラを有し、第２コントローラは学習対象群の各々の第１学習結果を取得し、ある学習対象の第１学習結果を他の学習対象に与えるように第１コントローラに送信し、第１学習結果を第１コントローラに送信した結果得られる学習対象群の各々の第２学習結果を取得し、各第１学習結果と各第２学習結果に基づいて学習対象群を評価して出力し、第１コントローラは、ある学習対象の行動が寄与したデータが遅延を伴って他の学習対象に与えられることにより他の学習対象の状態を生成し、ある学習対象の行動と他の学習対象の状態とに基づいて、他の学習対象の次の行動を選択し学習結果として送信する。【選択図】図１
2018142199.tif 000002
【特許請求の範囲】
【請求項１】
状態から行動を得る複数の学習対象により構成された学習対象群について、前記各学習対象の行動を学習する学習システムであって、
前記学習対象群を管理する第１コントローラと、前記第１コントローラを管理する第２コントローラと、を有し、
前記第２コントローラは、
前記第１コントローラからの前記学習対象群の各々の学習結果を第１学習結果として取得し、
前記学習対象群のうちある学習対象の第１学習結果を他の学習対象に与えるように、前記第１コントローラに送信し、
前記第１学習結果を前記第１コントローラに送信した結果得られる前記学習対象群の各々の学習結果を第２学習結果として取得し、
前記各第１学習結果と前記各第２学習結果とに基づいて、前記学習対象群を評価し、
評価結果を出力し、
前記第１コントローラは、
前記ある学習対象の行動が寄与したデータが遅延を伴って前記他の学習対象に与えられることにより、前記他の学習対象の状態を生成し、
前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、に基づいて、前記他の学習対象の次の行動を選択し、
前記他の学習対象の次の行動を前記学習結果として前記第２コントローラに送信する、
ことを特徴とする学習システム。
【請求項２】
請求項１に記載の学習システムであって、
前記第１コントローラは、
前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、に基づいて、前記他の学習対象の次の行動の選択に寄与する報酬を生成し、
前記報酬と、前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、に基づいて、前記他の学習対象の次の行動を選択する、
ことを特徴とする学習システム。
【請求項３】
請求項２に記載の学習システムであって、
前記第１コントローラは、
前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、の相関に基づいて、前記報酬を生成することを特徴とする学習システム。
【請求項４】
請求項２に記載の学習システムであって、
前記第１コントローラは、
前記報酬を前記学習結果として前記第２コントローラに送信し、
前記第２コントローラは、
前記各第１学習結果である各報酬と前記各第２学習結果である各報酬とに基づいて、前記学習対象群を評価する、
ことを特徴とする学習システム。
【請求項５】
請求項１に記載の学習システムであって、
前記第１コントローラは、
前記他の学習対象の前記状態に含まれる、増加するほど前記状態を悪化させる第１特徴量と、減少するほど前記状態を悪化させる第２特徴量と、に基づいて、前記状態が適正度を示すスコアを算出し、
前記スコアを前記学習結果として前記第２コントローラに送信し、
前記第２コントローラは、
前記各第１学習結果である各スコアと前記各第２学習結果である各スコアとに基づいて、前記学習対象群を評価する、
ことを特徴とする学習システム。
【請求項６】
状態から行動を得る複数の学習対象により構成された学習対象群について、前記各学習対象の行動を学習する学習システムによる学習方法であって、
前記学習システムは、前記学習対象群を管理する第１コントローラと、前記第１コントローラを管理する第２コントローラと、を有し、
前記学習方法は、
前記第２コントローラが、
前記第１コントローラからの前記学習対象群の各々の学習結果を第１学習結果として取得し、
前記学習対象群のうちある学習対象の第１学習結果を他の学習対象に与えるように、前記第１コントローラに送信し、
前記第１学習結果を前記第１コントローラに送信した結果得られる前記学習対象群の各々の学習結果を第２学習結果として取得し、
前記各第１学習結果と前記各第２学習結果とに基づいて、前記学習対象群を評価し、
評価結果を出力し、
前記第１コントローラが、
前記ある学習対象の行動が寄与したデータが遅延を伴って前記他の学習対象に与えられることにより、前記他の学習対象の状態を生成し、
前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、に基づいて、前記他の学習対象の次の行動を選択し、
前記他の学習対象の次の行動を前記学習結果として前記第２コントローラに送信する、
ことを特徴とする学習方法。
【請求項７】
請求項６に記載の学習方法であって、
前記学習方法は、
前記第１コントローラが、
前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、に基づいて、前記他の学習対象の次の行動の選択に寄与する報酬を生成し、
前記報酬と、前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、に基づいて、前記他の学習対象の次の行動を選択する、
ことを特徴とする学習方法。
【請求項８】
請求項７に記載の学習方法であって、
前記学習方法は、
前記第１コントローラが、
前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、の相関に基づいて、前記報酬を生成することを特徴とする学習方法。
【請求項９】
請求項７に記載の学習方法であって、
前記学習方法は、
前記第１コントローラが、
前記報酬を前記学習結果として前記第２コントローラに送信し、
前記第２コントローラが、
前記各第１学習結果である各報酬と前記各第２学習結果である各報酬とに基づいて、前記学習対象群を評価する、
ことを特徴とする学習方法。
【請求項１０】
請求項６に記載の学習方法であって、
前記学習方法は、
前記第１コントローラが、
前記他の学習対象の前記状態に含まれる、増加するほど前記状態を悪化させる第１特徴量と、減少するほど前記状態を悪化させる第２特徴量と、に基づいて、前記状態が適正度を示すスコアを算出し、
前記スコアを前記学習結果として前記第２コントローラに送信し、
前記第２コントローラが、
前記各第１学習結果である各スコアと前記各第２学習結果である各スコアとに基づいて、前記学習対象群を評価する、
ことを特徴とする学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習対象を学習する学習システムおよび学習方法に関する。
【背景技術】
【０００２】
特許文献１は、エージェント間で評価をバランスさせ、エージェント同士を協調させるマルチエージェントシステムを開示する。エージェント１は、候補データとしての変数値をランダムに選択し、環境から環境データを取得して、評価部にて評価値を算出する。エージェント１は、判断部によって評価値が向上すると判断すると、通信部を介し、エージェント２へ、変数値の評価要求を行う。エージェント２は、変数値の評価を行い、評価値が向上するならば合意を通知し、評価値が減少するならば減少分の評価値を代償として要求する。エージェント１は、エージェント２からの代償要求に対し、代償を支払っても評価値が向上する場合に合意する。このような交渉を経て、エージェント１，２はそれぞれが評価値を増加させるように動作することにより、候補データを更新出力する。
【０００３】
特許文献２は、ニューラルネットワーク装置での転移学習に適した新規な転移学習装置、転移学習システム、転移学習方法およびプログラムを開示する。転移学習装置は、各々に１以上の評価項目ごとのラベルが付された複数のラベル付き転移先データを、評価項目と同数以上の出力ユニットを出力層に有しかつ複数のラベル付き転移元データで学習済みのニューラルネットワーク装置に入力することにより、出力ユニットから出力された評価値を取得する転移先データ評価部と、１以上の評価項目の各々の評価値を出力するための出力ユニットとして、出力ユニットのうち当該評価項目のラベルとの差分が最も小さい評価値が取得された頻度がより高い出力ユニットを優先的に割り当てる出力層調整部と、を備える。
【０００４】
特許文献３は、経験強化型強化学習法と環境同定型強化学習法を統合して、学習に要する試行回数が少なく、動的な環境の変化に対してロバスト性があり、最適な学習効果が得られるマルチエージェントモデルを用いて経験強化型強化学習法と環境同定型強化学習法を統合する分散強化学習法を開示する。分散強化学習法は、経験強化型強化学習法と環境同定型強化学習法を統合して、学習に要する試行回数が少なく、動的な環境の変化に対してロバスト性がある経験強化型強化学習法の特徴と最適に近い学習効果が得られる環境同定型強化学習法の特徴を具備する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３‐２３３５９９号公報
【特許文献２】特開２０１６‐１４３０９４号公報
【特許文献３】特開２０００‐０２０４９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
分散システムには、たとえば、最下流である小売から二次卸、二次卸から次卸、一次卸から工場（以下、総称して、サブシステム）といった上流側への発注処理と、上流側から下流側への配送処理と、をおこなう物流のサプライチェーンがある。サプライチェーンのように各サブシステムが直列的につながっている系では、下流側のサブシステムの指標の悪化が系を遡って上流側に伝搬していく（いわゆるＢｕｌｌｗｈｉｐ効果）。たとえば、顧客から小売への注文量がほぼ一定にも関わらず、上流側への発注量の見込みを誤った結果、上流に遡って注残量や在庫量が増大する。上述した特許文献１〜３では、サプライチェーンのような系を最適化することができず、注残量や在庫量の増加を抑制することができない。
【０００７】
本発明は、状態から行動を得る学習対象群により構成される学習対象群の行動の最適化を図ることを目的とする。
【課題を解決するための手段】
【０００８】
本願において開示される発明の一側面となる学習システムおよび学習方法は、状態から行動を得る複数の学習対象により構成された学習対象群について、前記各学習対象の行動を学習する学習システムおよび学習方法であって、前記学習対象群を管理する第１コントローラと、前記第１コントローラを管理する第２コントローラと、を有し、前記第２コントローラは、前記第１コントローラからの前記学習対象群の各々の学習結果を第１学習結果として取得し、前記学習対象群のうちある学習対象の第１学習結果を他の学習対象に与えるように、前記第１コントローラに送信し、前記第１学習結果を前記第１コントローラに送信した結果得られる前記学習対象群の各々の学習結果を第２学習結果として取得し、前記各第１学習結果と前記各第２学習結果とに基づいて、前記学習対象群を評価し、評価結果を出力し、前記第１コントローラは、前記ある学習対象の行動が寄与したデータが遅延を伴って前記他の学習対象に与えられることにより、前記他の学習対象の状態を生成し、前記ある学習対象の行動と、前記生成された前記他の学習対象の状態と、に基づいて、前記他の学習対象の次の行動を選択し、前記他の学習対象の次の行動を前記学習結果として前記第２コントローラに送信する、ことを特徴とする。
【発明の効果】
【０００９】
本発明の代表的な実施の形態によれば、状態から行動を得る学習対象群の行動の最適化を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】図１は、サプライチェーンでの学習例を示す説明図である。
【図２】図２は、学習システムの構成例を示す説明図である。
【図３】図３は、コンピュータのハードウェア構成例を示すブロック図である。
【図４】図４は、端末における取引データテーブルの一例を示す説明図である。
【図５】図５は、サブシステムにおける学習対象データテーブルの一例を示す説明図である。
【図６】図６は、学習システムの機能的構成例を示すブロック図である。
【図７】図７は、サブコントローラの学習処理手順例を示すフローチャートである。
【図８】図８は、学習システムにおける全体学習処理手順例を示すシーケンス図である。
【発明を実施するための形態】
【００１１】
＜サプライチェーンでの学習例＞
図１は、サプライチェーン１００での学習例を示す説明図である。（Ａ）は、特定のサブシステム１０１での予備学習を示し、（Ｂ）は、サプライチェーン１００の全体学習を示す。本実施例では、一例として、下流から上流へ、小売、二次卸、一次卸、工場である各サブシステム１０１〜１０４が直列につながっているサプライチェーン１００の系を例に挙げて説明する。実際のサプライチェーン１００において、各サブシステムは、下流の複数のサブシステムに接続されているが、説明を単純化するため、直列につながっている部分に着目して説明する。なお、顧客が小売に発注してから、当該顧客にその発注に応じた物品が配送されるまでの工程を「ターン」という単位で示す。なお、本例では、説明を単純化するため、１種類の物品について説明する。
【００１２】
各サブシステム１０１〜１０４は、１つ上流のサブシステムから配送される物品を受け取る。ただし、工場は、最上流のサブシステムであるため、自身で生産して物品を受け取るものとする。各サブシステム１０１〜１０４は、１つ下流のサブシステムから発注票を受け取り、発注票と受注残分の数量の物品を在庫から、ある分だけ当該１つ下流のサブシステムに配送し、在庫と受注残の和が小さくなるように発注量を決め、１つ上流のサブシステムに発注票を送る。ただし、工場は、最上流のサブシステム１０４であるため、自身の生産量として処理するものとする。
【００１３】
サプライチェーン１００は、このような一連の処理を行う。なお、この発注票の上流への伝達には発注遅延が生じ、物品の下流への配送には配送遅延が生じる。よって、顧客が、小売に対して発注票を送ると、発注票は小売から発注遅延として伝播され、次に二次卸に送られ、最終的に工場にまで伝播される。反対に工場からは、発注票に応じて物品が配送遅延として送られ、次に一次卸に送られ、最終的に、物品は顧客に届く。
【００１４】
以上のようなサプライチェーン１００をなす系において、各サブシステム１０１〜１０４が在庫量と受注残を抑制するように発注量を決めることは、一般に困難なことが知られているが、本実施例では、各サブシステム１０１〜１０４を管理するサブコントローラと、各サブコントローラを管理するメインコントローラ１５０との連携により、各サブシステム１０１〜１０４からの発注の仕方（いわゆる、発注のコツ）を獲得する。発注の仕方とは、たとえば、発注量や掛け率である。在庫量と受注残の和をスコアと称す。各サブコントローラ（工場のサブコントローラを除く）は、１つ上流のサブシステムに、スコアが小さくなるような発注の仕方を学習させる。
【００１５】
より具体的には、まず、（Ａ）予備学習が実行される。サプライチェーン１００において所定ターン数（たとえば、１００回）の取引が行われ、各サブシステム１０１〜１０４において、ターンごとに、受注量、在庫量、受注残、発注量、掛け率が取引データとして蓄積される。
【００１６】
予備学習では、小売のサブコントローラが有するＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ：人工知能）１１１が、小売の状態を学習し、学習結果を出力する。学習結果には、たとえば、状態やこれに対する発注の仕方、報酬やＱ値やスコアが含まれる。状態とは、蓄積された取引データであり、ＡＩは、ターン順に、受注量、在庫、受注残、発注遅延として伝播された１〜ｎ−１ターン前の発注量（過去発注量）を学習対象データとして取得する。報酬とは、たとえば、Ｑ学習においてＡＩが算出する値であり、サブコントローラの次にとるべき行動（どのような発注の仕方にすべきか）を決める指標となる。また、予備学習では、小売以外のサブシステム１０２〜１０４のサブコントローラは、人または模擬プレイヤにより、サブシステム１０２〜１０４の発注処理と配送処理とを支援する。模擬プレイヤとは、過去の取引データに基づくシミュレータである。模擬プレイヤは、たとえば、過去の発注量の統計量（たとえば、平均値など）により発注量を決定する。
【００１７】
ＡＩ１１１は、ＡＩ１１１で得られた学習結果１２１をメインコントローラ１５０に送信する。学習結果１１１とは、上述したように、報酬やスコアのほか、Ｑテーブルを含んでもよい。Ｑテーブルとは、Ｑ学習において、状態および行動の組み合わせごとに算出された評価値（Ｑ値）である。評価値が最大となる行動が、サブコントローラの次にとるべき行動となる。ＡＩがニューラルネットワークを用いた学習であれば、ニューラルネットワークで得られる重みでもよい。
【００１８】
つぎに、（Ｂ）全体学習が実行される。サプライチェーン１００において所定ターン数（たとえば、１００回）の取引が複数回試行される。各サブシステム１０１〜１０４において、受注量、在庫量、受注残、発注量、掛け率である所定ターン数の取引データが試行ごとに蓄積される。
【００１９】
（Ｂ）全体学習では、各サブコントローラのＡＩ１１１が個別に状態を学習し、報酬を獲得する。また、メインコントローラ１５０が各ＡＩ１１１を統括管理する。具体的には、たとえば、小売のＡＩ１１１は、各試行の取引データを用いる場合、１つ前の試行（１回目の試行の場合は、予備学習）で得られた学習結果を読み込んで、今回蓄積された取引データに適用する。二次卸、一次卸、および工場のＡＩ１１１は、１つ前の試行（１回目の試行の場合は、ランダムな値）で得られた学習結果を読み込んで、今回蓄積された取引データに適用する。
【００２０】
メインコントローラ１５０は、試行ごとに各ＡＩから学習結果を取得して評価する。具体的には、たとえば、学習結果に報酬が含まれている場合、メインコントローラ１５０は、全ＡＩ１１１の報酬が上昇しているか否かを判断する。全ＡＩ１１１の報酬が上昇している場合、サプライチェーン１００全体でパフォーマンスが向上していることが判明する。また、学習結果にスコアが含まれている場合、メインコントローラ１５０は、全ＡＩのスコアが減少しているか否かを判断する。全ＡＩ１１１の報酬が減少している場合、サプライチェーン１００全体でパフォーマンスが向上していることが判明する。
【００２１】
＜学習システムの構成例＞
図２は、学習システム２００の構成例を示す説明図である。学習システム２００において、各サブシステム１０１〜１０４は、端末２０１〜２０４を有する。各端末２０１〜２０４は、所属するサブシステム１０１〜１０４における取引データの入力を受け付けて記憶する。各端末２０１〜２０４は、それぞれサブコントローラ２１１〜２１４と通信可能に接続され、取引データを、同一サブシステムに所属するサブコントローラに送信する。各サブコントローラ２１１〜２１４は、ＡＩ１１１を有し、ＡＩ１１１により受信した取引データを用いて強化学習を実行する。なお、上述したように、図１（Ａ）の予備学習においては、小売のサブコントローラ２１１のみ強化学習を実行する。また、図１（Ｂ）の全体学習においては、各サブコントローラ２１１〜２１４は、１つ下流からの学習結果を用いて、受信した取引データについて強化学習を実行する。
【００２２】
メインコントローラ１５０は、各サブシステム１０１〜１０４とネットワークを介して通信可能に接続される。メインコントローラ１５０は、各サブシステム１０１〜１０４から学習結果を受信し、評価する。また、メインコントローラ１５０は、図１（Ｂ）の全体学習において、あるサブシステムからの学習結果をその１つ上流のサブシステムに転送する。
【００２３】
なお、図２において、サブコントローラ２１１〜２１４は、サブシステム１０１〜１０４ごとに設けたが、一部または全部のサブシステム１０１〜１０４が共有するサブコントローラとしてもよい。また、サブコントローラ２１１〜２１４とメインコントローラ１５０も１台のコンピュータで実現してもよい。
【００２４】
＜コンピュータのハードウェア構成例＞
図３は、コンピュータのハードウェア構成例を示すブロック図である。端末、サブシステム、およびメインシステムを総称して、コンピュータとする。コンピュータ３００は、プロセッサ３０１と、記憶デバイス３０２と、入力デバイス３０３と、出力デバイス３０４と、通信インタフェース（通信ＩＦ３０５）と、を有する。プロセッサ３０１、記憶デバイス３０２、入力デバイス３０３、出力デバイス３０４、および通信ＩＦ３０５は、バスにより接続される。プロセッサ３０１は、コンピュータ３００を制御する。記憶デバイス３０２は、プロセッサ３０１の作業エリアとなる。また、記憶デバイス３０２は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス３０２としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリがある。入力デバイス３０３は、データを入力する。入力デバイス３０３としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス３０４は、データを出力する。出力デバイス３０４としては、たとえば、ディスプレイ、プリンタがある。通信ＩＦ３０５は、ネットワークと接続し、データを送受信する。
【００２５】
＜取引データテーブル＞
図４は、端末２０１〜２０４における取引データテーブル４００の一例を示す説明図である。取引データテーブル４００は、端末２０１〜２０４に入力された取引データを保存するデータテーブルである。取引データテーブル４００は、サブシステム１０１〜１０４ごとに存在し、かつ、物品ごとに存在する。なお、以降の説明において、ＡＡフィールドｂｂｂ（ＡＡはフィールド名、ｂｂｂは符号）の値を、ＡＡｂｂｂと表記する場合がある。たとえば、試行ＩＤフィールド４０１の値を、試行ＩＤ４０１と表記する。
【００２６】
取引データテーブル４００は、試行ＩＤフィールド４０１と、ターンＩＤフィールド４０２と、受注量フィールド４０３と、在庫量フィールド４０４と、受注残フィールド４０５と、発注量フィールド４０６と、掛け率フィールド４０７と、を有する。同一行の各フィールド４０１〜４０７の値の組み合わせにより、１ターン分の取引データを構成する。
【００２７】
試行ＩＤフィールド４０１は、試行ＩＤを格納する記憶領域である。試行ＩＤ４０１は、値として試行を一意に特定する識別情報である。試行とは、あらかじめ設定された複数のターンの集合であり、１試行分の取引データ群が強化学習の学習単位となる。１試行分の取引データ群とは、試行ＩＤ４０１が共通するエントリ群である。端末は、試行ＩＤ４０１単位の取引データ群を、そのサブコントローラに送信する。
【００２８】
ターンＩＤフィールド４０２は、値としてターンＩＤを格納する記憶領域である。ターンＩＤ４０２とは、ターンを一意に特定する識別情報である。ターンは、顧客が小売に発注してから、当該発注した物品が顧客に配送されるまでの流れである。受注量フィールド４０３は、受注量を格納する記憶領域である。受注量４０３とは、１つ下流のサブシステム（小売は最下流であるため、顧客。以降同じ。）から発注された物品の数量である。また、図示はしないが、ターンＩＤ４０２は、当該ターンの発生時刻も含まれる。
【００２９】
在庫量フィールド４０４は、値として在庫量を格納する記憶領域である。在庫量フィールド４０４は、サブフィールドとして、受注前在庫量フィールド４４１と、出荷後在庫量フィールド４４２と、入荷後在庫量フィールド４４３と、を有する。
【００３０】
受注前在庫量フィールド４４１は、値として受注前在庫量４４１を格納する記憶領域である。受注前在庫量４４１とは、１つ下流のサブシステムからの発注を受ける前の在庫量である。
【００３１】
出荷後在庫量フィールド４４２は、値として出荷後在庫量を格納する記憶領域である。出荷後在庫量とは、１つ下流のサブシステムからの発注に応じて物品を出荷した後の在庫量である。すなわち、出荷後在庫量４４２とは、受注前在庫量４４１から受注量４０３を減算した在庫量であるが、０以上の値となる。たとえば、試行ＩＤ４０１：ｔｒ１のターンＩＤ４０２：ｔｓ１＿１のエントリにおける出荷後在庫量４４２：ｓｔｋ１ｂ＿１は、下記式（１）となる。
【００３２】
ｓｔｋ１ｂ＿１＝ｓｔｋ１ａ＿１−ｖｏ１＿１・・・（１）
【００３３】
ただし、式（１）で負になる場合、出荷後在庫量４４２：ｓｔｋ１ｂ＿１は、ｓｔｋ１ｂ＿１＝０となり、その負の値の絶対値は、受注残４０５：ｂｌｇ１＿１に等しい。
【００３４】
入荷後在庫量フィールド４４３は、値として入荷後在庫量を格納する記憶領域である。入荷後在庫量４４３とは、１つ上流のサブシステム（工場は最上流であるため、工場自身の生産。以降同じ。）への発注に応じて当該１つ上流のサブシステムから入荷された後の在庫量である。すなわち、入荷後在庫量４４３とは、出荷後在庫量４４２に発注量を加算した在庫量である。たとえば、試行ＩＤ４０１：ｔｒ１のターンＩＤ４０２：ｔｓ１＿１のエントリにおける入荷後在庫量４４３：ｓｔｋ１ｃ＿１は、下記式（２）となる。
【００３５】
ｓｔｋ１ｃ＿１＝ｓｔｋ１ｂ＿１＋ｏｑ１＿１・・・（２）
【００３６】
配送遅延がない状況では、入荷後在庫量４４３：ｓｔｋ１ｃ＿１は、次のターン（ターンＩＤ４０２：ｔｓ２＿１）の受注前在庫量４４１：ｓｔｋ１ａ＿１となるが、配送遅延の影響を受けると、受注前在庫量４４１：ｓｔｋ１ａ＿１は、ターンＩＤ４０２：ｔｓ１＿１の出荷後在庫量４４２：ｓｔｋ１ｂ＿１と等しくなる。このように、配送遅延が伝播すると、受注残４０５や発注量４０７にも伝播することになる。
【００３７】
受注残フィールド４０５は、受注残を格納する記憶領域である。受注残４０５とは、１つ下流のサブシステムからの受注量４０３に対して未出荷である残存受注量である。たとえば、ある物品について受注量４０３が１００個、受注前在庫量４４１が８０個とすると、受注前在庫量４４１の８０個は、発注元である１つ下流のサブシステムに出荷できるが、不足分の２０個は未出荷状態である。この２０個が受注残４０５である。すなわち、受注残４０５は、受注量４０３から受注前在庫量４４１を減算した値（非負整数）である。たとえば、試行ＩＤ４０１：ｔｒ１のターンＩＤ４０２：ｔｓ１＿１のエントリにおける受注残４０５：ｂｌｇ１＿１は、下記式（３）となる。
【００３８】
ｂｌｇ１＿１＝ｖｏ１＿１−ｓｔｋ１ａ＿１・・・（３）
【００３９】
ただし、式（３）で負になる場合、受注残４０５：ｂｌｇ１＿１は、ｂｌｇ１＿１＝０となり、その負の値の絶対値は、出荷後在庫量４４２：ｓｔｋ１ｂ＿１に等しい。
【００４０】
遅延時間フィールド４０６は、遅延時間を格納する記憶領域である。遅延時間４０６とは、そのサブシステムが発注量４０７分の物品を１つ上流のサブシステムに発注してから、当該１つ上流サブシステムから当該物品が入荷されるまでの時間である。
【００４１】
発注量フィールド４０７は、発注量を格納する記憶領域である。発注量４０７とは、１つ上流のサブシステムに発注される物品の数量である。受注量４０３が受注前在庫量４４１で賄える場合、すなわち、受注残４０５が０である場合、サブシステムは、１つ上流のサブシステムに発注する必要がない。したがって、発注量４０７は、受注残４０５以上の数量となる。
【００４２】
掛け率フィールド４０８は、掛け率を格納する記憶領域である。掛け率とは、発注する物品の数量をどのくらい多めに見積もるかを決定するレートであり、たとえば、１以上の実数である。受注残４０５に掛け率を乗じた値（小数点以下は、切捨てでも四捨五入でもよい）が発注量４０７となる。たとえば、掛け率が「１」の場合、受注残４０５と発注量４０７は同一数量となる。すなわち、在庫でまかなえなかった不足分のみ、１つ上流のサブシステムから補充されることになる。一方、掛け率が「１」より大きい値であれば、発注量４０７は受注残４０５以上となるため、受注残４０５を差し引いた残りの数量が在庫（入荷後在庫量４４３）として補充されることになる。
【００４３】
＜学習対象データテーブル＞
図５は、サブシステム１０１〜１０４における学習対象データテーブル５００の一例を示す説明図である。学習対象データテーブル５００は、サブコントローラ２１１〜２１４が、端末２０１〜２０４からの試行ＩＤ４０１単位の取引データ群を、状態ｓと行動ａとに分けて集約した学習対象データを保存するデータテーブルである。学習対象データテーブル５００は、サブシステム１０１〜１０４ごとに存在し、かつ、物品ごとに存在する。
【００４４】
学習対象データテーブル５００は、試行ＩＤフィールド４０１と、状態フィールド５０２と、行動フィールド５０３と、を有する。同一行のフィールド５０１〜５０３の値の組み合わせにより、１試行分の学習対象データを構成する。
【００４５】
状態フィールド５０２は、サブフィールドとして、特定受注量フィールド５２１と、特定在庫量フィールド５２２と、特定受注残フィールド５２３と、過去発注量フィールド５２４と、を有する。特定受注量フィールド５２１は、値として特定受注量を格納する記憶領域である。特定受注量５２１とは、たとえば、１試行における最後（ｎターン目。ｎは、１試行におけるターン数、すなわち、１試行における取引データ数。）の取引データの受注量４０３である。なお、最後の受注量４０３に限らず、当該試行ＩＤ４０１内のｉ（１≦ｉ≦ｎ）ターン目の在庫量でもよく、当該試行ＩＤ４０１内の取引データ群における受注量４０３の最大値、最小値、平均値または中央値でもよい。また、当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全受注量４０３でもよい。
【００４６】
特定在庫量フィールド５２２は、値として特定在庫量を格納する記憶領域である。特定在庫量５２２とは、特定受注量５２１に対応する在庫量である。たとえば、特定受注量５２１が、ｎターン目の取引データの受注量４０３であれば、特定在庫量５２２も、ｎターン目の取引データの在庫量４０４となる。また、特定受注量５２１が、当該試行ＩＤ４０１内のｉ（１≦ｉ≦ｎ）ターン目の受注量４０３、受注量４０３の最大値、最小値、または中央値であれば、特定在庫量５２２も、当該受注量４０３と同一取引データにおける在庫量４０４となる。また、特定受注量５２１が、当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全受注量４０３であれば、特定在庫量５２２も当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全在庫量４０４となる。また、特定受注量５２１が当該試行ＩＤ４０１内の取引データ群における受注量４０３の平均値であれば、特定在庫量５２２も当該試行ＩＤ４０１内の取引データ群における在庫量４０４の平均値となる。なお、特定在庫量５２２は、受注前、出荷後、入荷後のいずれかの在庫量４０４である。いずれの在庫量４０４が採用されるかは、あらかじめ設定される。
【００４７】
特定受注残フィールド５２３は、値として特定受注残を格納する記憶領域である。特定受注残５２３とは、特定受注量５２１および特定在庫量５２２に対応する受注残４０５である。たとえば、特定受注量５２１が、ｎターン目の取引データの受注量４０３であれば、特定受注残５２３も、ｎターン目の取引データの受注残４０５となる。また、特定受注量５２１が、当該試行ＩＤ４０１内のｉ（１≦ｉ≦ｎ）ターン目の受注量４０３、受注量４０３の最大値、最小値、または中央値であれば、特定受注残５２３も、当該受注量４０３と同一取引データにおける受注残４０５となる。また、特定受注量５２３が、当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全受注量４０３であれば、特定受注残５２３も当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全受注残４０５となる。また、特定受注量５２１が当該試行ＩＤ４０１内の取引データ群における受注量４０３の平均値であれば、特定受注残５２３も当該試行ＩＤ４０１内の取引データ群における受注残４０５の平均値となる。
【００４８】
過去発注量フィールド５２４は、値として１ターン前〜ｎ−１ターン前の発注量４０７を格納する記憶領域である。過去発注量フィールド５２４の値は、発注遅延が伝播した発注量４０７となる。ｎ−１ターン前の過去発注量５２４は、当該試行ＩＤ４０１における１ターン目の取引データにおける発注量４０７となる。
【００４９】
過去遅延時間フィールド５２５は、値として１ターン前〜ｎ−１ターン前の遅延時間４０６を格納する記憶領域である。ｎ−１ターン前の過去遅延時間５２５は、当該試行ＩＤ４０１における１ターン目の取引データにおける遅延時間４０６となる。
【００５０】
行動フィールド５０３は、サブフィールドとして、特定発注量フィールド５３１と、特定掛け率フィールド５３２と、を有する。特定発注量フィールド５３１は、値として特定発注量を格納する記憶領域である。特定発注量５３１とは、特定受注量５２１〜特定受注残５２３に対応する発注量４０７である。たとえば、特定受注量５２１が、ｎターン目の取引データの受注量４０３であれば、特定発注量５３１も、ｎターン目の取引データの発注量４０７となる。また、特定受注量５２１が、当該試行ＩＤ４０１内のｉ（１≦ｉ≦ｎ）ターン目の受注量４０３、受注量４０３の最大値、最小値、または中央値であれば、特定受注量５３１も、当該受注量４０３と同一取引データにおける発注量４０７となる。また、特定受注量５２１が、当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全受注量４０３であれば、特定受注量５３１も当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全発注量４０７となる。また、特定受注量５２１が当該試行ＩＤ４０１内の取引データ群における受注量４０３の平均値であれば、特定発注量５３１も当該試行ＩＤ４０１内の取引データ群における発注量４０７の平均値となる。
【００５１】
特定掛け率フィールド５３２は、値として特定掛け率を格納する記憶領域である。特定掛け率５３２とは、特定受注量５２１〜特定発注量５３１に対応する掛け率４０８である。たとえば、特定受注量５２１が、ｎターン目の取引データの受注量４０３であれば、特定掛け率５３２も、ｎターン目の取引データの掛け率４０８となる。また、特定受注量４０３が、当該試行ＩＤ４０１内のｉ（１≦ｉ≦ｎ）ターン目の受注量４０３、受注量４０３の最大値、最小値、または中央値であれば、特定掛け率５３２も、当該受注量４０３と同一取引データにおける掛け率４０８となる。また、特定受注量５２１が、当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全受注量４０３であれば、特定掛け率５３２も当該試行ＩＤ４０１内の取引データ群における１ターン目からｎターン目までの全掛け率４０８となる。また、特定受注量５２１が当該試行ＩＤ４０１内の取引データ群における受注量４０３の平均値であれば、特定掛け率５３２も当該試行ＩＤ４０１内の取引データ群における掛け率４０８の平均値となる。
【００５２】
＜学習システム２００の機能的構成例＞
図６は、学習システム２００の機能的構成例を示すブロック図である。各サブシステム１０１〜１０４は、第１通信部６０１と、取得部６０２と、第１評価部６０３と、更新部６０４と、選択部６０５と、出力部６０６と、を有する。第１通信部６０１は、図３に示した通信ＩＦ３０６により実現される。また、取得部６０２〜出力部６０６は、具体的には、たとえば、図３に示した記憶デバイス３０２に記憶されたプログラムをプロセッサ３０１に実行させることにより実現される。
【００５３】
第１通信部６０１は、メインコントローラ１５０の第２通信部６１１およびサブシステム１０４〜１０４の端末２０１〜２０４とデータを送受信するインタフェースである。
【００５４】
取得部６０２は、第１通信部６０１で受信したデータを取得する。具体的には、たとえば、取得部６０２は、そのサブシステムの端末から第１通信部６０１で受信された１回の試行の取引データ群を読み込み、学習対象データ群として取得する。また、取得部６０２は、第１通信部６０１で受信したメインコントローラ１５０からの学習結果を取得する。
【００５５】
第１評価部６０３は、取得部６０２で取得された学習対象データ群を評価する。第１評価部６０３は、たとえば、予備学習の場合は、メインコントローラ１５０からの学習結果を用いずに評価し、全体学習の場合は、メインコントローラ１５０からの学習結果を用いて評価する。具体的には、たとえば、第１評価部６０３は、後述する図７のステップＳ７０４〜Ｓ７０７の算出処理を実行する。
【００５６】
更新部６０４は、第１評価部６０３で評価されたデータを更新する。具体的には、たとえば、更新部６０４は、後述する図７のステップＳ７０６〜Ｓ７０７の更新処理を実行する。
【００５７】
選択部６０５は、サブコントローラ２１１〜２１４が次にとるべき行動を選択する。具体的には、たとえば、選択部６０５は、図７のステップＳ７０８の選択処理を実行する。
【００５８】
出力部６０６は、学習結果を出力し、第１通信部６０１に渡す。学習結果には、第１評価部６０３での算出結果、更新部６０４での更新結果、選択部６０５での選択結果が含まれる。
【００５９】
メインコントローラ１５０は、第２通信部６１１と、設定部６１３と、第２評価部６１２と、制御部６１４と、を有する。第２通信部６１１は、図３に示した通信ＩＦ３０６により実現される。また、設定部６１３〜制御部６１４は、具体的には、たとえば、図３に示した記憶デバイス３０２に記憶されたプログラムをプロセッサ３０１に実行させることにより実現される。
【００６０】
第２通信部６１１は、各サブコントローラ２１１〜２１４の第１通信部６０１とデータを送受信するインタフェースである。
【００６１】
設定部６１３は、割当設定を実行する。割当設定とは、図８のステップＳ８０１に示すように、学習結果の提供側サブコントローラと利用側サブコントローラとの組み合わせを設定する処理であり、あるサブコントローラからの学習結果の提供先となるサブコントローラを一意に特定する。
【００６２】
第２評価部６１２は、各サブコントローラ２１１〜２１４からの学習結果を評価する。具体的には、第２評価部６１２は、図８のステップＳ８０６に示すように、サプライチェーン１００全体のパフォーマンスが向上しているか否かを評価する処理である。
【００６３】
制御部６１４は、メインコントローラ１５０を制御する。具体的には、たとえば、制御部６１４は、設定部６１３の割当設定にしたがって、学習結果の送信先となるステップコントローラを決定する。また、制御部６１４は、特定のサブコントローラ（たとえば、最下流のサブシステムに所属するサブコントローラ）を、予備学習対象となるサブコントローラを決定する。また、制御部６１４は、全体学習の開始指示や終了を制御する。
【００６４】
＜サブコントローラ２１１〜２１４の学習処理手順例＞
図７は、サブコントローラ２１１〜２１４の学習処理手順例を示すフローチャートである。図７に示す処理は、図１（Ａ）予備学習，（Ｂ）全体学習に共通の処理である。図７では、強化学習を例に挙げて説明するが、ニューラルネットワークによる機械学習でもよい。
【００６５】
サブコントローラ２１１〜２１４は、学習の試行を開始する（ステップＳ７０１）。つぎに、サブコントローラは、担当のサブシステムの端末から１試行分の取引データ群を取得する（ステップＳ７０２）。なお、１試行分の取引データ群の取得（ステップＳ７０２）は、ステップＳ７０１より前に実行されてもよい。また、ステップＳ７０１の前後において、サブコントローラ２１１〜２１４は、複数回の試行分の取引データ群を取得してもよい。
【００６６】
サブコントローラ２１１〜２１４は、ステップＳ７０２で取得した１試行分の取引データ群から学習対象データ群を生成し、学習対象データテーブル５００に格納する（ステップＳ７０３）。
【００６７】
（Ｂ）全体学習では、最下流である小売のサブコントローラ２１１は、その小売のサブシステム１０１の端末２０１から、１試行分の取引データ群を取得する。これに対し、小売以外の他のサブコントローラ２１２〜２１４は、それぞれ担当のサブシステム１０２〜１０４の端末２０２〜２０４から、１試行分の特定の取引データ群を取得する。特定の取引データ群とは、試行ＩＤ４０１、ターンＩＤ４０２、１ターン目の受注前在庫量４４１、遅延時間４０６を含むデータ群である。
【００６８】
受注量４０３については、他のサブコントローラ２１２〜２１４は、１つ下流のサブコントローラからの発注量４０７を、受注量４０３として適用する。また、２ターン目以降の受注前在庫量４４１、出荷後在庫量４４２、入荷後在庫量４４３、および受注残４０５については、他のサブコントローラ２１２〜２１４は、当該受注量４０３とターンＩＤ４０２に含まれる発生時刻と遅延時間４０６とを用いて算出する。
【００６９】
掛け率４０８については、他のサブコントローラ２１２〜２１４は、１つ下流のサブコントローラからの学習結果に含まれる掛け率４０８をターンごとに適用する。また、他のサブコントローラ２１２〜２１４は、当該掛け率４０８と、算出された受注残４０５と、を用いて、発注量４０７をターンごとに算出する。これにより、小売以外の他のサブシステム１０２〜１０４については、遅延が考慮された取引データ群が得られることになる。
【００７０】
つぎに、サブコントローラ２１１〜２１４は、１試行分の学習対象データ群を用いて、ターンごとに、ターンＩＤ４０２の順番で、発注の仕方（掛け率４０８）を学習する（ステップＳ７０４〜Ｓ７０９）。具体的には、サブコントローラ２１１〜２１４は、スコアを算出する（ステップＳ７０４）。スコアは、たとえば、今回取得した試行ＩＤ４０１の学習対象データについて、特定在庫量５２２と特定受注残４０５との和とする。つぎに、サブコントローラは、相関情報を算出する（ステップＳ７０５）。相関情報は、状態と行動に基づく２つのデータの相関を示す情報である。たとえば、サブコントローラ２１１〜２１４は、相関情報としてスコアを用いる場合、今回取得した試行ＩＤ４０１のスコアを相関情報とする。
【００７１】
また、学習対象データ群が、当該試行ＩＤ４０１の１ターン目からｎターン目までのすべての取引データ群を含む場合、サブコントローラ２１１〜２１４は、在庫量（たとえば、発注前在庫量）と受注残４０５との和であるスコアをターンごとに求めて説明変数ｘｉとし、ターンごとの発注量４０７を目的変数ｙｉとして、式（４）を用いて相関係数（相関情報の一例）を求めてもよい。ｘａｖは、ｘｉの平均値であり、ｙａｖは、ｙｉの平均値である。サブコントローラ２１１〜２１４は、算出した相関情報を記憶デバイス３０２に保持する。
【００７２】
【数１】
2018142199.tif 000003
【００７３】
つぎに、サブコントローラ２１１〜２１４は、報酬を算出して更新する（ステップＳ７０６）。報酬の初期値は、あらかじめ設定される。サブコントローラ２１１〜２１４は、ステップＳ７０５で算出した今回の試行ＩＤ４０１での相関情報から前回の試行ＩＤ４０１での相関情報を減算した差分に応じて、報酬の増減分を算出する。そして、サブコントローラ２１１〜２１４は、前回の報酬に今回算出した報酬の増減分加算することで、今回の報酬を算出する。これにより、報酬が更新される。
【００７４】
たとえば、相関情報が上述したスコアである場合、サブコントローラ２１１〜２１４は、今回の試行ＩＤ４０１でのスコアから前回の試行ＩＤ４０１でのスコアを減算して差分を得る。サブコントローラ２１１〜２１４は、差分が正であれば、所定量報酬を減少させ、差分が負であれば、所定量報酬を増加させ、差分が０であれば、報酬を増減させない。
【００７５】
また、相関情報が相関係数である場合、サブコントローラ２１１〜２１４は、今回の試行ＩＤ４０１での相関係数から前回の試行ＩＤ４０１での相関係数を減算して差分を得る。サブコントローラ２１１〜２１４は、差分が正であれば、所定量報酬を増加させ、差分が負であれば、所定量報酬を減少させ、差分が０であれば、報酬を増減させない。
【００７６】
サブコントローラ２１１〜２１４は、行動ごとに評価値Ｑを算出して更新する（ステップＳ７０７）。ここで、行動として掛け率を用いる場合について説明する。掛け率は、たとえば、「１．０」、「１．１」、「１．２」、…、「１．９」のようにあらかじめ複数設定されている。サブコントローラ２１１〜２１４は、これらの掛け率を次回の行動候補として、下記式（５）の行動価値関数により、行動候補ごとに評価値Ｑを算出する。
【００７７】
Ｑ（ｓｔ，ａｔ）
←Ｑ（ｓｔ，ａｔ）＋α［ｒｔ＋１＋γｍａｘＱ（ｓｔ＋１，ａ）−Ｑ（ｓｔ，ａｔ）］
・・・・・（５）
【００７８】
αは学習係数で、０＜α≦１の範囲をとるパラメータである。γは割引率であり、０＜γ≦１の範囲をとるパラメータである。ｒｔ＋１は、更新後の報酬ｒである。ｓｔ＋１は、更新後の状態ｓである。γｍａｘＱ（ｓｔ＋１，ａｔ）は、状態ｓｔ＋１の下で、最もＱ値の高い行動ａを選んだ場合のＱ値にγを乗じた値となる。
【００７９】
サブコントローラ２１１〜２１４は、最大評価値Ｑの行動ａを選択する（ステップＳ７０８）。なお、ここではＱ学習におけるε-ｇｒｅｅｄｙ法のように、評価値Ｑが高い行動を選択する他、サブコントローラ２１１〜２１４は、一定の確率でそれとは異なる行動を選択してもよい。そして、サブコントローラ２１１〜２１４は、現在のターンの学習結果を出力する（ステップＳ７０９）。ここで、学習結果とは、最新の報酬である。また、実行された試行ＩＤ４０１での現在のターンにおけるＱ値を網羅したＱテーブルでもよい。学習結果は、試行ＩＤ４０１での現在のターンのスコアも含む。また、学習結果には、状態や発注の仕方（掛け率）が含まれていてもよい。また、出力とは、たとえば、1つ上流のサブコントローラに当該学習結果を送信する処理である。
【００８０】
なお、強化学習ではなくニューラルネットワークによる機械学習の場合、サブコントローラは、ステップＳ７０５〜Ｓ７０９に替えて、在庫量（たとえば、発注前在庫量）と受注残４０５との和であるスコアをターンごとに求めて入力データｘｉとし、ターンごとの掛け率を出力データｙｉとして、ニューラルネットワークの重み、すなわち、状態ｓと行動ａとの関係を示す最適化モデルを求め、試行の都度更新してもよい。この場合、サブコントローラ２１１〜２１４は、最新の最適化モデルに、今回の試行ＩＤ４０１の学習対象データから得られるスコアを入力データｘとして与えることにより、次の行動となる掛け率４０８を出力データｙとして選択してもよい。
【００８１】
このあと、サブコントローラ２１１〜２１４は、試行を終了するか否かを判断する（ステップＳ７１０）。終了しない場合（ステップＳ７１０：Ｎｏ）、ステップＳ７０１に戻り、サブコントローラ２１１〜２１４は、次の試行を開始する。一方、サブコントローラ２１１〜２１４は、たとえば、予備学習の場合、あらかじめ設定された試行回数分ステップＳ７０１〜Ｓ７０９の処理を実行した場合に試行を終了する（ステップＳ７１０：Ｙｅｓ）。また、サブコントローラ２１１〜２１４は、全体学習の場合、メインコントローラ１５０から試行終了指示を受け付けた場合に試行を終了する（ステップＳ７１０：Ｙｅｓ）。
【００８２】
このようにして、サブコントローラ２１１〜２１４は、評価値が高かった行動を選択していく（ただし、一定の確率で異なる行動を選択していく）ことで、発注の仕方を試行錯誤を通して学習することができる。
【００８３】
＜全体学習処理＞
図８は、学習システム２００における全体学習処理手順例を示すシーケンス図である。メインコントローラ１５０は、割当設定を実行する（ステップＳ８０１）。割当設定とは、学習結果の提供側サブコントローラと利用側サブコントローラとの組み合わせを設定する処理である。学習結果の提供側サブコントローラとは、自身の学習結果で利用側サブコントローラを学習させるサブコントローラである。利用側サブコントローラとは、提供側サブコントローラの学習結果を用いて学習するサブコントローラである。各サブコントローラ２１１〜２１４は、提供側サブコントローラと利用側サブコントローラとのいずれにもなり得る。
【００８４】
具体的には、提供側サブコントローラは、下流側のサブコントローラであり、利用側サブコントローラは、その１つ上流側のサブコントローラである。たとえば、小売のサブコントローラ２１１が提供側サブコントローラであり、二次卸のサブコントローラ２１２は、利用側サブコントローラとなる。また、二次卸のサブコントローラ２１２を提供側サブコントローラとした場合、一次卸のサブコントローラ２１３は、利用側サブコントローラとなる。
【００８５】
また、本例では、提供側サブコントローラを下流側のサブコントローラとし、利用側サブコントローラをその１つ上流側のサブコントローラとしたが、提供側サブコントローラを、上流側のサブコントローラとし、利用側サブコントローラを、その１つ下流側のサブコントローラとしてもよい。
【００８６】
なお、ここでは、サブコントローラ２１１〜２１４は、下流および上流の組み合わせにより割当設定を実行したが、学習結果の提供と利用の関係が直接または間接的に維持されていればよい。たとえば、小売のサブコントローラ２１１と一次卸のサブコントローラ２１３は、学習結果の提供と利用の関係が直接または間接的に維持されるため、割当設定として選択してもよい。
【００８７】
このように、割当設定により、メインコントローラ１５０は、あるサブコントローラからの学習結果の提供先を一意に特定する。なお、図８では、説明上、各サブコントローラ２１１〜２１４が提供側サブコントローラとし、その１つ上流のサブコントローラをそれぞれ利用側サブコントローラとする。
【００８８】
メインコントローラ１５０は、後述するステップＳ８０４−１〜８０４−４において、前回各サブコントローラ２１１〜２１４で生成された学習結果を各サブコントローラ２１１〜２１４に送信する（ステップＳ８０２−１〜８０２−４）。具体的には、たとえば、メインコントローラ１５０は、割当設定された提供側サブコントローラの前回の学習結果を、その利用側サブコントローラに送信する。なお、小売のサブコントローラ２１１は、利用側サブコントローラに設定されないため、メインコントローラ１５０は、前回の小売りのサブコントローラ２１１の学習結果を小売のサブコントローラ２１１に送信する。また、１回目の学習結果の送信（ステップＳ８０２−１〜８０２−４）の場合、前回の学習結果が存在しないため、メインコントローラ１５０は、ランダムな値を設定した学習結果を送信することとしてもよい。ただし、メインコントローラ１５０は、小売のサブコントローラ２１１が実行した予備学習の学習結果を、当該小売のサブコントローラ２１１に送信してもよい。
【００８９】
メインコントローラ１５０は、学習開始指示を各サブコントローラ２１１〜２１４に送信する（ステップＳ８０３−１〜８０３−４）。
【００９０】
各サブコントローラ２１１〜２１４は、学習開始指示（ステップＳ８０３−１〜８０３−４）を受信すると、学習処理を実行する（ステップＳ８０４−１〜８０４−４）。学習処理（ステップＳ８０４−１〜８０４−４）は、図７に示したステップＳ７０１〜Ｓ７０９の処理である。ただし、メインコントローラ１５０から提供側サブシステムの前回の学習結果を受信しているため、スコアの算出（ステップＳ７０４）、相関情報の算出（ステップＳ７０５）、報酬の算出（ステップＳ７０６）において、受信した前回の学習結果に前回のスコア、相関情報、報酬が含まれていれば、ステップＳ７０４〜Ｓ７０６の算出に用いられる。
【００９１】
各サブコントローラ２１１〜２１４は、学習処理（ステップＳ８０４−１〜８０４−４）で得られた学習結果をメインコントローラ１５０に送信する（ステップＳ８０５−１〜８０５−４）。この学習結果は、メインコントローラ１５０の記憶デバイス３０２に格納され、次回のステップＳ８０２−１〜８０２−４で送信される。
【００９２】
メインコントローラ１５０は、評価処理を実行する（ステップＳ８０６）。評価処理（ステップＳ８０６）とは、ステップＳ８０５−１〜８０５−４で受信した学習結果を評価する処理である。具体的には、評価処理（ステップＳ８０６）は、サプライチェーン１００全体のパフォーマンスが向上しているか否かを評価する処理である。
【００９３】
たとえば、学習結果に報酬が含まれている場合、メインコントローラ１５０は、サブコントローラ２１１〜２１４ごとに、前回の報酬と今回の報酬とを比較する。いずれのサブコントローラ２１１〜２１４も報酬が上昇している場合、メインコントローラ１５０は、サプライチェーン１００全体のパフォーマンスが向上していると判断する。
【００９４】
また、学習結果にスコアが含まれている場合、メインコントローラ１５０は、サブコントローラ２１１〜２１４ごとに、前回のスコアと今回のスコアとを比較する。いずれのサブコントローラ２１１〜２１４もスコアが下降している場合、メインコントローラ１５０は、サプライチェーン１００全体のパフォーマンスが向上していると判断する。
【００９５】
なお、１回の評価処理（ステップＳ８０６）では、偶然サプライチェーン１００全体のパフォーマンスが向上していると判断される場合もある。したがって、メインコントローラ１５０は、さらに、所定の評価条件を満たした場合に、サプライチェーン１００全体のパフォーマンスが向上していると判断してもよい。
【００９６】
評価条件としては、たとえば、評価処理（ステップＳ８０６）が所定回数実行された場合、いずれのサブコントローラ２１１〜２１４の報酬も所定回数連続して上昇した場合、いずれのサブコントローラ２１１〜２１４のスコアも所定回数連続して下降した場合、いずれのサブコントローラ２１１〜２１４の報酬も報酬のしきい値以上となった場合、いずれのサブコントローラ２１１〜２１４のスコアもスコアのしきい値以下となった場合などが挙げられる。これらの評価条件は、矛盾しない限り組み合わせて利用されてもよい。
【００９７】
メインコントローラ１５０は、全体学習を終了するか否かを判断する（ステップＳ８０７）。全体学習の終了の判断基準は、たとえば、評価結果の内容である。具体的には、評価処理（ステップＳ８０６）において、サプライチェーン１００全体のパフォーマンスが向上していると判断された場合、メインコントローラ１５０は、全体学習を終了すると判断する（ステップＳ８０７：Ｙｅｓ）。一方、サプライチェーン１００全体のパフォーマンスが向上していないと判断された場合、メインコントローラ１５０は、全体学習を終了しないと判断する（ステップＳ８０７：Ｎｏ）。
【００９８】
また、サプライチェーン１００全体のパフォーマンスが向上していないと判断された場合であっても、全体学習の開始から所定時間経過した場合や、全体学習が所定回数実行された場合に、メインコントローラ１５０は、全体学習を打ち切って、終了すると判断してもよい（ステップＳ８０７：Ｙｅｓ）。
【００９９】
全体学習を終了する場合（ステップＳ８０７：Ｙｅｓ）、メインコントローラ１５０は、各サブコントローラ２１１〜２１４に試行終了指示を送信する（Ｓ８０８−１〜８０８−４）。そして、メインコントローラ１５０は、最終的な評価処理（ステップＳ８０６）の評価結果を出力する（ステップＳ８０９）。これにより、全体学習が終了する。
【０１００】
このように、本実施例の学習システム２００は、状態（たとえば、在庫量４０４や受注残４０５を含む）から行動（たとえば、掛け率４０８）を得る複数の学習対象（たとえば、サブシステム１０１〜１０４）により構成される学習対象群について、各学習対象の行動を学習する。学習システム２００は、学習対象群を管理する第１コントローラ（たとえば、サブコントローラ２１１〜２１４）と、第１コントローラを管理する第２コントローラ（たとえば、メインコントローラ１５０）と、を有する。
【０１０１】
第２コントローラは、第１コントローラからの学習対象群の各々の学習結果を第１学習結果として取得し（たとえば、ステップＳ８０５−１〜Ｓ８０５−４）、学習対象群のうち、ある学習対象（たとえば、小売のサブシステム１０１）の第１学習結果を他の学習対象（たとえば、二次卸のサブシステム１０２）に与えるように、第１コントローラに送信し（たとえば、ステップＳ８０２−１〜Ｓ８０２−４）、第１学習結果を第１コントローラに送信した結果得られる学習対象群の各々の学習結果を第２学習結果として取得し（たとえば、ステップＳ８０５−１〜Ｓ８０５−４）、各第１学習結果と各第２学習結果とに基づいて、学習対象群を評価し（たとえば、ステップＳ８０６）、評価結果を出力する（たとえば、ステップＳ８０９）。
【０１０２】
第１コントローラは、ある学習対象の行動が寄与したデータ（たとえば、発注量４０７）が遅延を伴って他の学習対象に与えられることにより、他の学習対象の状態を生成し（たとえば、ステップＳ７０３）、ある学習対象の行動と、生成された他の学習対象の状態と、に基づいて、他の学習対象の次の行動を選択し（たとえば、ステップＳ７０８）、他の学習対象の次の行動を学習結果として第２コントローラに送信する（たとえば、ステップＳ８０５−１〜Ｓ８０５−４）。
【０１０３】
これにより、状態から行動を得る複数の学習対象により構成される学習対象群の各々の行動を、他の学習対象に伝搬させることで、学習対象群全体の行動の最適化を図ることができる。特に、状態は遅延の影響を受けているため、遅延の影響を考慮して選択された行動を最適化することができる。
【０１０４】
また、第１コントローラは、ある学習対象の行動と、生成された他の学習対象の状態と、に基づいて、他の学習対象の次の行動の選択に寄与する報酬を生成し、報酬と、ある学習対象の行動と、生成された他の学習対象の状態と、に基づいて、他の学習対象の次の行動を選択することとしてもよい。
【０１０５】
これにより、Ｑ学習により学習対象群の行動の最適化を図ることができる。
【０１０６】
また、第１コントローラは、ある学習対象の行動と、生成された他の学習対象の状態と、の相関に基づいて、報酬を生成することとしてもよい。
【０１０７】
目的達成に特に関わる行動（掛け率４０８）が選択しやすくなるように報酬が更新される。したがって、学習対象群の行動最適の高速化を図ることができる。
【０１０８】
また、第１コントローラは、報酬を前記学習結果として第２コントローラに送信し、第２コントローラは、各第１学習結果である各報酬と各第２学習結果である各報酬とに基づいて、学習対象群を評価することとしてもよい。
【０１０９】
これにより、第１学習結果の各報酬と、第２学習結果の対応する各報酬と、の増減により、学習対象群の評価の適正化を図ることができる。
【０１１０】
また、第１コントローラは、他の学習対象の状態に含まれる、増加するほど状態を悪化させる第１特徴量（たとえば、在庫量４０４）と、減少するほど状態を悪化させる第２特徴量（たとえば、受注残４０５）と、に基づいて、状態が適正度を示すスコアを算出し、スコアを学習結果として第２コントローラに送信することとしてもよい。
【０１１１】
これにより、スコアを小さくするような行動の仕方は、第１特徴量を少なくし、かつ、第２特徴量を増加させることで実現される。したがって、このような行動の仕方を、第１コントローラに学習させることができ、学習対象の行動の最適化を図ることができる。
【０１１２】
第２コントローラは、各第１学習結果である各スコアと各第２学習結果である各スコアとに基づいて、学習対象群を評価することとしてもよい。
【０１１３】
これにより、第１学習結果の各スコアと、第２学習結果の対応する各スコアと、の増減により、学習対象群の評価の適正化を図ることができる。
【０１１４】
このように、深層強化学習によって、いわば試行錯誤的に学習する際に、互いの振る舞いが影響しあうようなサブコントローラのすべてに同時に学習を行わせようとすると学習が進みづらいが、メインコントローラ１５０によって決めた発注行動をサブコントローラに行わせつつ、部分的なサブコントローラから徐々に学習させることで、全体としての学習が進むようにする。なお、本実施例においては、サプライチェーン１００を例として説明を行ったが、複数の車両、複数のロボットなど、他の分散システムであってもよい。
【０１１５】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【０１１６】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサ３０１がそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１１７】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード、ＳＤカード、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）の記録媒体に格納することができる。
【０１１８】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０１１９】
１０１〜１０４  サブシステム
２０１〜２０４  端末
２１１〜２１４  サブコントローラ
１００  サプライチェーン
１５０  メインコントローラ
２００  学習システム
６０１  通信部
６０２  取得部
６０３  評価部
６０４  更新部
６０５  選択部
６０６  出力部
６１１  通信部
６１２  評価部
６１３  設定部
６１４  制御部
【図１】
2018142199.tif 000004
【図２】
2018142199.tif 000005
【図３】
2018142199.tif 000006
【図４】
2018142199.tif 000007
【図５】
2018142199.tif 000008
【図６】
2018142199.tif 000009
【図７】
2018142199.tif 000010
【図８】
2018142199.tif 000011