(57)【要約】【課題】加工条件に応じて、工作機械を制御する各プロセスを最適な演算部に割り当てる。【解決手段】工作機械を制御する複数のプロセスを複数の演算部にて並列に実行する制御装置に対して、強化学習を行う機械学習装置が、前記複数のプロセスを実行する演算部の割り当てを含んだ行動情報を、前記制御装置に対して出力する行動情報出力手段と、前記工作機械に設定した加工に関しての条件である加工条件と、前記行動情報に含まれる割り当てに基づいた前記複数の演算部による前記複数のプロセスの実行を監視することにより生成された判定情報と、を含む状態情報を取得する状態情報取得手段と、前記状態情報に含まれる前記判定情報に基づいて、強化学習における報酬の値を算出する報酬算出手段と、前記報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新手段と、を備える。【選択図】図４
2019003271.tif 000002
【特許請求の範囲】
【請求項１】
工作機械を制御する複数のプロセスを複数の演算部にて並列に実行する制御装置に対して、強化学習を行う機械学習装置であって、
前記複数のプロセスを実行する演算部の割り当てを含んだ行動情報を、前記制御装置に対して出力する行動情報出力手段と、
前記工作機械に設定した加工に関しての条件である加工条件と、前記行動情報に含まれる割り当てに基づいた前記複数の演算部による前記複数のプロセスの実行を監視することにより生成された判定情報と、を含む状態情報を取得する状態情報取得手段と、
前記状態情報に含まれる前記判定情報に基づいて、強化学習における報酬の値を算出する報酬算出手段と、
前記報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新手段と、
を備える機械学習装置。
【請求項２】
前記複数の演算部は、前記複数のプロセスを所定の周期で所定回数に分けて実行し、
前記価値関数更新手段は、前記複数の演算部において、前記複数のプロセスが終了する都度、前記行動価値関数を更新し、
前記行動情報出力手段は、前記複数の演算部において、前記複数のプロセスが終了する都度、割り当て内容を変更した行動情報を前記制御装置に対して出力する、
請求項１に記載の機械学習装置。
【請求項３】
前記行動情報に含まれる前記割り当ては、前記複数の演算部のそれぞれが実行するプロセスの指定と、プロセスを実行する順序とを含み、
前記行動情報出力手段は、前記割り当て内容を変更した行動情報として、前記複数の演算部のそれぞれが実行するプロセスの指定と、プロセスを実行する順序の少なくとも何れかを変更した行動情報を、前記制御装置に対して出力する請求項２に記載の機械学習装置。
【請求項４】
前記複数の演算部の内の一部の演算部については割り当てられるプロセスが固定されており、
前記行動情報出力手段は、前記割り当て内容を変更した行動情報として、割り当てられるプロセスが固定されていない演算部についての割り当て内容を変更した行動情報を出力する請求項２又は３に記載の機械学習装置。
【請求項５】
当該機械学習装置により行われる強化学習は、シミュレータにより仮想的に再現された前記制御装置に対して行われ、
前記強化学習終了後、前記制御装置の実機から取得した状態情報と、前記強化学習により学習された行動価値関数と、に基づいて前記行動情報を生成し、生成した行動情報を前記制御装置の実機に対して出力する最適化行動情報出力部を更に備える請求項１から請求項４の何れか１項に記載の機械学習装置。
【請求項６】
前記制御装置の実機から取得した状態情報に含まれる加工条件が、未だ強化学習の対象としていない加工条件であった場合に、当該加工条件を、加工条件の内容の一部が一致する加工条件であって機械学習の対象としたことのある他の加工条件に変更する加工条件変更手段を更に備え、
前記最適化行動情報出力部は、前記加工条件変更部により加工条件が変更された状態情報と、前記他の加工条件に応じた前記強化学習により学習された行動価値関数とに基づいて前記行動情報を生成し、生成した前記行動情報を前記制御装置の実機に対して出力する請求項５に記載の機械学習装置。
【請求項７】
前記加工条件を生成し、生成した加工条件を前記制御装置に対して設定する加工条件生成手段を更に備える請求項１から請求項６の何れか１項に記載の機械学習装置。
【請求項８】
前記制御装置であって、請求項１から請求項７の何れか１項に記載の強化学習装置を備える制御装置。
【請求項９】
工作機械を制御する複数のプロセスを複数の演算部にて並列に実行する制御装置に対して、強化学習を行う機械学習装置としてコンピュータを機能させる機械学習プログラムであって、
前記複数のプロセスを実行する演算部の割り当てを含んだ行動情報を、前記制御装置に対して出力する行動情報出力手段と、
前記工作機械に設定した加工に関しての条件である加工条件と、前記行動情報に含まれる割り当てに基づいた前記複数の演算部による前記複数のプロセスの実行を監視することにより生成された判定情報と、を含む状態情報を取得する状態情報取得手段と、
前記状態情報に含まれる前記判定情報に基づいて、強化学習における報酬の値を算出する報酬算出手段と、
前記報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新手段と、
を備える機械学習装置として前記コンピュータを機能させる機械学習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算部にて並列処理を行う装置を対象として機械学習を行う、機械学習装置、制御装置及び機械学習プログラムに関する。
【背景技術】
【０００２】
従来、加工プログラムに基づいて工作機械を制御する制御装置が知られている。工作機械の制御装置では、工作機械の各軸の位置や速度をリアルタイムに制御するために、所定の制御プログラムを、一定の周期内、または一定の時間内に実行しなければならない。
【０００３】
しかしながら、近年、工作機械の多軸化や多機能化に伴い、制御プログラムは大規模化し、その処理量は大幅に増加している。また、より高速かつ高精度な加工を実現するためには、軸制御の周期を短縮させなくてはならない。従って、制御装置の処理速度を向上させる必要がある。
更に、工作機械の制御装置は、軸の制御に限らず、通信機能や表示機能、信号の入出力機能などを備えており、これらの機能の全てを滞りなく実行する必要もある。
【０００４】
これらの要求を満たすために、工作機械の制御装置に、マルチプロセッサやマルチコアといった複数の演算部を搭載したハードウェアを採用し、この複数の演算部にて制御プログラムを並列に処理することが一般的になっている。複数の演算部を搭載したハードウェアを採用することにより、制御装置での単位時間あたりの処理量を増やすことができ、結果として、より短時間でより多くの処理を実行することができる。
【０００５】
このような複数の演算部にて制御プログラムを並列に処理する制御装置は、例えば、特許文献１に開示されている。
また、複数の演算部による並列処理を効率化させるための技術が、特許文献２から特許文献５に開示されている。
例えば、特許文献２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）間で負荷分散を行うことにより、各コアの稼働率を均等化する技術が開示されている。また、特許文献３には、キャッシュのヒット率を向上させるための技術が開示されている。更に、特許文献４及び特許文献５には、処理を分割して分散することで、単位時間あたりの処理量を増やすための技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−３５５６４号公報
【特許文献２】特開２００９−１６３５２７号公報
【特許文献３】特開２０１５−２００９４７号公報
【特許文献４】特開２０１６−０１２２２１号公報
【特許文献５】特開２０１６−０５１２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、特許文献２から特許文献５には、制御プログラムの並列処理を効率化させるための技術が開示されている。
しかしながら、特許文献２に開示の技術では、各コアの稼働率は均等化できても、コア間の通信量や、各コアの消費電力量や発熱量を最適化することは難しい。また、特許文献３、特許文献４及び特許文献５に開示の技術では、単位時間あたりの処理量を増やすことはできても、加工条件に応じた最適な処理分散パターンを確立することはできない。
【０００８】
このように、各特許文献には特定の項目に関する最適化技術は開示されているが、高いリアルタイム性が要求され、かつ多様な加工条件下で動作する工作機械の分野では、特定の項目についてのみ最適化する技術では大きな効果を得ることはできない。
また、仮に各特許文献の技術を併用したとしても、トレードオフの関係にある項目間では、相互関係を数式化するのは難しく、膨大なデータから最適解を求めるのは非常に困難である。
【０００９】
そこで本発明は、工作機械を制御する各プロセス（前記制御プログラム）を、加工条件に応じて最適な演算部に割り当てるための、機械学習装置、制御装置及び機械学習プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
（１）  本発明における機械学習装置（例えば、後述の機械学習装置１００）は、工作機械を制御する複数のプロセスを複数の演算部（例えば、後述の第１コア２４１、第２コア２４２、第３コア２４３、第４コア２４４）にて並列に実行する制御装置（例えば、後述の制御装置シミュレータ２００）に対して、強化学習を行う機械学習装置であって、前記複数のプロセスを実行する演算部の割り当てを含んだ行動情報を、前記制御装置に対して出力する行動情報出力手段（例えば、後述の行動情報出力部１３０）と、前記工作機械に設定した加工に関しての条件である加工条件と、前記行動情報に含まれる割り当てに基づいた前記複数の演算部による前記複数のプロセスの実行を監視することにより生成された判定情報と、を含む状態情報を取得する状態情報取得手段（例えば、後述の状態情報取得部１１０）と、前記状態情報に含まれる前記判定情報に基づいて、強化学習における報酬の値を算出する報酬算出手段（例えば、後述の報酬算出部１２１）と、前記報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新手段（例えば、後述の価値関数更新部１２２）と、を備える。
【００１１】
（２）  上記（１）に記載の機械学習装置において、前記複数の演算部は、前記複数のプロセスを所定の周期で所定回数に分けて実行し、前記価値関数更新手段は、前記複数の演算部において、前記複数のプロセスが終了する都度、前記行動価値関数を更新し、前記行動情報出力手段は、前記複数の演算部において、前記複数のプロセスが終了する都度、割り当て内容を変更した行動情報を前記制御装置に対して出力する、ようにしてもよい。
【００１２】
（３）  上記（２）に記載の機械学習装置において、前記行動情報に含まれる前記割り当ては、前記複数の演算部のそれぞれが実行するプロセスの指定と、プロセスを実行する順序とを含み、前記行動情報出力手段は、前記割り当て内容を変更した行動情報として、前記複数の演算部のそれぞれが実行するプロセスの指定と、プロセスを実行する順序の少なくとも何れかを変更した行動情報を、前記制御装置に対して出力するようにしてもよい。
【００１３】
（４）  上記（２）又は（３）に記載の機械学習装置において、前記複数の演算部の内の一部の演算部については割り当てられるプロセスが固定されており、前記行動情報出力手段は、前記割り当て内容を変更した行動情報として、割り当てられるプロセスが固定されていない演算部についての割り当て内容を変更した行動情報を出力するようにしてもよい。
【００１４】
（５）  上記（１）から（４）の何れかに記載の機械学習装置において、当該機械学習装置により行われる強化学習は、シミュレータにより仮想的に再現された前記制御装置に対して行われ、前記強化学習終了後、前記制御装置の実機から取得した状態情報と、前記強化学習により学習された行動価値関数と、に基づいて前記行動情報を生成し、生成した行動情報を前記制御装置の実機に対して出力する最適化行動情報出力手段（例えば、後述の最適化行動情報出力部１５０）を更に備えるようにしてもよい。
【００１５】
（６）  上記（５）に記載の機械学習装置において、前記制御装置の実機から取得した状態情報に含まれる加工条件が、未だ強化学習の対象としていない加工条件であった場合に、当該加工条件を、加工条件の内容の一部が一致する加工条件であって機械学習の対象としたことのある他の加工条件に変更する加工条件変更手段（例えば、後述の加工条件変更部６００）を更に備え、前記最適化行動情報出力部は、前記加工条件変更部により加工条件が変更された状態情報と、前記他の加工条件に応じた前記強化学習により学習された行動価値関数とに基づいて前記行動情報を生成し、生成した前記行動情報を前記制御装置の実機に対して出力するようにしてもよい。
【００１６】
（７）  上記（１）から（６）の何れかに記載の機械学習装置において、前記加工条件を生成し、生成した加工条件を前記制御装置に対して設定する加工条件生成部（例えば、後述の加工条件生成部５００）を更に備えるようにしてもよい。
【００１７】
（８）前記制御装置であって、上記（１）から上記（７）の何れかに記載の強化学習装置を備える制御装置。
【００１８】
（８）  本発明の機械学習プログラムは、工作機械を制御する複数のプロセスを複数の演算部（例えば、後述の第１コア２４１、第２コア２４２、第３コア２４３、第４コア２４４）にて並列に実行する制御装置（例えば、後述の制御装置シミュレータ２００）に対して、強化学習を行う機械学習装置（例えば、後述の機械学習装置１００）としてコンピュータを機能させる機械学習プログラムであって、前記複数のプロセスを実行する演算部の割り当てを含んだ行動情報を、前記制御装置に対して出力する行動情報出力手段（例えば、後述の行動情報出力部１３０）と、前記工作機械に設定した加工に関しての条件である加工条件と、前記行動情報に含まれる割り当てに基づいた前記複数の演算部による前記複数のプロセスの実行を監視することにより生成された判定情報と、を含む状態情報を取得する状態情報取得手段（例えば、後述の状態情報取得部１１０）と、前記状態情報に含まれる前記判定情報に基づいて、強化学習における報酬の値を算出する報酬算出手段（例えば、後述の報酬算出部１２１）と、前記報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新手段（例えば、後述の価値関数更新部１２２）と、を備える機械学習装置として前記コンピュータを機能させる。
【発明の効果】
【００１９】
本発明によれば、工作機械を制御する各プロセスを、加工条件に応じて最適な演算部に割り当てることが可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態全体の基本的構成を示す機能ブロック図である。
【図２】本発明の実施形態における制御装置シミュレータの構成を示す機能ブロック図である。
【図３】本発明の実施形態における制御プロセスの割り当てについて示す模式図である。
【図４】本発明の実施形態における機械学習装置の構成を示す機能ブロック図である。
【図５】本発明の実施形態における制御装置の構成を示す機能ブロック図である。
【図６】本発明の実施形態における機械学習装置の、学習フェーズでの動作について説明するためのフローチャートである。
【図７】本発明の実施形態における機械学習装置の、運用フェーズでの動作について説明するためのフローチャートである。
【図８】本発明の実施形態における加工条件に応じた制御プロセスの割り当てについて示す模式図である。
【図９】本発明の実施形態の第１の変形例における基本的構成を示す機能ブロック図である。
【図１０】本発明の実施形態の第２の変形例における基本的構成を示す機能ブロック図である。
【図１１】本発明の実施形態の第２の変形例における類似する加工条件を選択する基準の例を示すテーブルである。
【発明を実施するための形態】
【００２１】
次に、本発明の実施形態について図面を参照して詳細に説明する。
＜実施形態の全体構成＞
図１は本実施形態である機械学習システム１の全体構成を示す機能ブロック図である。図１に示すように機械学習システム１は、機械学習装置１００、制御装置シミュレータ２００、制御装置３００及び工作機械４００を含んで構成される。
【００２２】
機械学習装置１００は、制御装置シミュレータ２００を対象として機械学習を行う装置である。機械学習装置１００は、学習フェーズにて、機械学習を行うことにより、工作機械を制御する各プロセスを、加工条件に応じて最適な演算部に割り当てるための価値関数を求める。
【００２３】
また、機械学習装置１００は、運用フェーズにて、学習フェーズで求められた価値関数に基づいて、各プロセスを最適な演算部に割り当てるための行動情報を生成し、生成した行動情報を制御装置３００に対して出力する。これにより、制御装置３００は、各プロセスを、加工条件に応じて最適な演算部に割り当てて、工作機械４００を適切に制御することが可能となる。
機械学習装置１００は、パーソナルコンピュータやサーバ装置や数値制御装置等により実現できる。
【００２４】
制御装置シミュレータ２００は、機械学習のために、制御装置３００を仮想的に再現するシミュレータである。本実施形態では、機械学習の過程において、加工条件等を容易に変更することができるシミュレータを対象として機械学習を行う。ただし、機械学習を、制御装置３００そのものを対象として行うようにしてもよい。
制御装置シミュレータ２００も、機械学習装置１００と同様にパーソナルコンピュータやサーバ装置や数値制御装置等により実現できる。
【００２５】
制御装置３００は、複数の演算部により並列に演算処理を実行することにより、工作機械４００の駆動を制御する装置である。制御装置３００は、機械学習装置１００から入力された行動情報に基づいて、各プロセスを最適な演算部に割り当てて演算処理を行う。
制御装置３００は、複数の演算部として、複数のコア（マルチコア）を含んだプロセッサ、あるいは複数のプロセッサ（マルチプロセッサ）を備えた数値制御装置により実現できる。
なお、図中では、制御装置３００が仮想的に再現されたものではないことを示すために「（実機）」の文言を記載する。
【００２６】
工作機械４００は、制御装置３００の制御により駆動する工作機械である。なお、工作機械４００を、例えば、ロボットや産業機械等に置き換えるようにしてもよい。
【００２７】
次に、これら装置の接続について説明する。機械学習装置１００は、制御装置シミュレータ２００や制御装置３００と通信可能に接続される。また、制御装置３００及び工作機械４００も通信可能に接続される。これら通信は、例えば、工場内に構築されたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）により実現できる。また、これら通信は、有線通信及び無線通信の何れか又はその組み合わせであってもよく、その通信規格等に特に制限はない。更に、これら通信は、インターネットや公衆電話網等のネットワーク（図示を省略する）を介したものでよく、この場合、各装置はそれぞれ近傍（例えば、同じ工場内）に設置されてもよいが、遠方の場所に別々に設置されてもよい。
なお、図中では、これら装置を１台ずつ図示するが、これら装置の台数に制限はなく、その接続も１対１のみならず、１対多や、多対多の接続であってもよい。
【００２８】
＜制御装置シミュレータ２００の機能ブロック＞
次に、制御装置シミュレータ２００が備える機能ブロックについて図２を参照して説明をする。
図２に示すように、制御装置シミュレータ２００は、第１制御プロセス群２１０、第２制御プロセス群２２０、オペレーティングシステム２３０及びプロセッサ２４０を含んで構成される。
【００２９】
本実施形態では、ユーザにより設定された加工条件に基づいて加工プログラムが実行される。これに伴い、加工プログラムの特定の処理や機能に対応する複数の制御プロセスが選択される。図中の第１制御プロセス群２１０及び第２制御プロセス群２２０は、この選択された複数の制御プロセスである。そして、この複数の制御プロセスは、後述のプロセッサ２４０に含まれる各コアの何れかにて実行される。
【００３０】
第１制御プロセス群２１０に含まれる制御プロセスは、後述の第１コア２４１で実行される。本実施形態では、第１制御プロセス群２１０に含まれる制御プロセスの一例として、基本軸制御と同期制御を図示する。
【００３１】
ここで、基本軸制御は、基本軸（例えば、工作機械４００の制御における、Ｘ軸、Ｙ軸及びＺ軸）の移動量を計算する制御プロセスである。また、同期制御は、基本軸に連動して動作する同期軸（例えば、工作機械４００の制御における、Ｘ２軸、Ｙ２軸及びＺ２軸）の移動量を計算する制御プロセスである。このように、本実施形態は、基本軸と同基軸のように、１つのワークに対して同期して加工を行う軸が、２系統あるいは３系統以上ある場合にも適用することができる。
【００３２】
第２制御プロセス群２２０に含まれる制御プロセスは、後述の第２コア２４２、第３コア２４３及び第４コア２４４の何れかで実行される。本実施形態では、第２制御プロセス群２２０に含まれる制御プロセスの一例として、拡張軸制御、前処理、通信制御、表示操作、工具管理、及びデバイス管理を図示する。
【００３３】
ここで、拡張軸制御は、ワークの取り外し等を行う拡張軸（例えば、工作機械４００の制御における、ローダ軸）の移動量を計算する制御プロセスである。
また、前処理は、加工プログラムから、移動量を計算するための中間コードを生成する制御プロセスである。
また、通信制御は、イーサネット（登録商標）やシリアル通信による外部機器（パーソナルコンピュータやセンサ類等）との通信を制御する制御プロセスである。
また、表示操作は、制御装置の表示画面の作成、およびキー入力等を制御する制御プロセスである。また、工具管理は、加工に用いる工具情報を管理する制御プロセスである。
また、デバイス管理は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリやＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）カード等のデバイスを制御する制御プロセスである。
【００３４】
これら第１制御プロセス群２１０や第２制御プロセス群２２０に含まれる各制御プロセスは、所定のインタフェースを経由して他の制御プロセスとの間で、相互に処理の利用や、データの受け渡しを行う。所定のインタフェースの例としては、例えば、オブジェクト指向におけるメソッドの呼び出しや、コマンド送受信による通信等が挙げられる。
【００３５】
なお、これら第１制御プロセス群２１０や第２制御プロセス群２２０に含まれる各制御プロセスは、あくまで例示に過ぎず他の制御プロセスが追加されたり、他の制御プロセスに置き換えられたりしてもよい。
【００３６】
また、上述した加工条件は、後述する強化学習における状態情報の一部として、機械学習装置１００により利用される。そのため、加工条件は、制御装置シミュレータ２００から機械学習装置１００に対して出力される。
【００３７】
ここで、加工条件は、例えば、パラメータ設定、運転モード、モーダル情報、加工プログラム、パラメータ設定、プロセッサコアの稼働状況等の情報を含む。これらの情報についてそれぞれ説明する。
【００３８】
パラメータ設定は、機械構成に基づいて設定されるパラメータの内容を示す情報である。例えば、工作機械の全ての軸数、工作機械の主軸数、拡張制御機能の有効・無効、同期制御機能の有効・無効等の内容がパラメータ設定に含まれる情報の具体例として挙げられる。
【００３９】
運転モードは、工作機械に設定されている運転モードの内容を示す情報である。例えば、自動運転モード、手動運転モード、プログラムの編集モード等のモードの何れに工作機械が設定されているかを示す情報が運転モードに含まれる情報の具体例として挙げられる。
【００４０】
モーダル情報は、工作機械に設定されているモーダル指令の内容を示す情報である。例えば、切削モード、早送りモード、タッピングモード等の何れにモーダル指令が設定されているかを示す情報がモーダル情報に含まれる情報の具体例として挙げられる。
【００４１】
加工プログラムは、ワーク加工のために工作機械を制御するプログラムとして何れの加工プログラムを使用しているかを示す情報である。例えば、加工プログラムの識別情報や、工具の移動経路、加工中に使用する機能群を示す情報が加工プログラムに含まれる情報の具体例として挙げられる。
【００４２】
プロセッサコアの稼働状況は、コアの稼働状況を示す情報である。例えば、稼働しているコアの数や、コアの動作周波数を示す情報がプロセッサコアの稼働状況に含まれる情報の具体例として挙げられる。
【００４３】
オペレーティングシステム２３０は、プロセッサ２４０による制御プロセスの実行等についての制御を行うＯＳである。オペレーティングシステム２３０は、監視部２３１、第１マルチコア制御部２３２及び第２マルチコア制御部２３３を含んで構成される。
【００４４】
監視部２３１は、制御プロセスを実行するプロセッサ２４０に関しての監視を行う部分である。監視部２３１は、監視を行うために、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）モニタや、タスクマネージャとしての機能を備える。監視部２３１は、監視結果に基づいて判定情報を生成し、生成した判定情報を機械学習装置１００に対して出力する。この判定情報は、後述する強化学習における状態情報の一部として、機械学習装置１００により利用される。
【００４５】
判定情報に含まれる情報の例としては、例えば、プロセッサ２４０に含まれる各コアの稼働率、プロセッサ２４０に含まれる各コアの単位時間あたりの処理量、プロセッサ２４０に含まれる各コア間の通信量、プロセッサ２４０に含まれる各コアの発熱量、プロセッサ２４０に含まれる各コアのキャッシュヒット率等が挙げられる。
【００４６】
ただし、これらの情報はあくまで例示に過ぎず、他の情報が追加されたり、他の情報に置き換えられたりしてもよい。また、より詳細な情報であってもよい。例えば、コアから高速にアクセス可能なＬ１キャッシュと、Ｌ１キャッシュよりも低速であるがメインメモリにアクセスするよりも高速にアクセス可能なＬ２キャッシュが存在する場合を考える。この場合に、Ｌ１キャッシュにおけるキャッシュヒット率と、Ｌ２キャッシュにおけるキャッシュヒット率とを区別して、判定情報に含めるようにしてもよい。
【００４７】
第１マルチコア制御部２３２及び第２マルチコア制御部２３３は、プロセッサ２４０に含まれる各コアに、制御プロセスを割り当てて実行させる。
具体的には、第１マルチコア制御部２３２は、制御プロセスを実行するコアを固定したＡＭＰ（Ａｓｙｍｍｅｔｒｉｃａｌ  ｍｕｌｔｉ−ｐｒｏｃｅｓｓｉｎｇ）型の制御を行う。第１マルチコア制御部２３２は、第１制御プロセス群２１０に含まれる制御プロセスを第１コア２４１に割り当てて、第１コア２４１に割り当てた制御プロセスを実行させる。
【００４８】
これに対して、第２マルチコア制御部２３３は、制御プロセスを実行するコアを固定しないＳＭＰ（Ｓｙｍｍｅｔｒｉｃａｌ  ｍｕｌｔｉ−ｐｒｏｃｅｓｓｉｎｇ）型の制御を行う。第２マルチコア制御部２３３は、第２制御プロセス群２２０に含まれる制御プロセスを、第２コア２４２、第３コア２４３及び第４コア２４４の何れかに割り当てて、各コアに割り当てた制御プロセスを実行させる。第２マルチコア制御部２３３が何れのコアに何れの制御プロセスを割り当てるのかは、機械学習装置１００が第２マルチコア制御部２３３に対して出力する行動情報に基づいて行われる。行動情報は、後述する強化学習において、機械学習装置１００から出力される。
【００４９】
ここで、制御プロセスを割り当てるとは、各コアが実行すべき制御プロセスを指定することのみならず、制御プロセスの実行順序を指定することを含む。
なお、説明を簡単にするために、制御プロセスを割り当てると表現しているが、実際には、制御プロセスに含まれる独立した１つ以上のタスクまたはスレッドを単位として割り当てる。この場合、タスクまたはスレッドを適切に実行するために、１つのタスクまたはスレッドの開始から終了までは、同一の各コア上で実行するようにする。つまり、タスク、またはスレッドの実行途中で、実行する各コアを変更しないようにする。
【００５０】
プロセッサ２４０は、第１コア２４１、第２コア２４２、第３コア２４３及び第４コア２４４の４つのコアを含むプロセッサである。これら各コアは、第１マルチコア制御部２３２又は第２マルチコア制御部２３３の割り当てに基づいて制御プロセスを実行する。
なお、制御装置シミュレータ２００は、制御装置３００を仮想的に再現する装置であり、プロセッサ２４０のコア数や動作周波数等は、制御装置３００に含まれるプロセッサを仮想的に再現したものとなる。つまり、プロセッサ２４０は、制御装置シミュレータ２００が実際にハードウェアとして備える演算処理装置のコア数や動作周波数に限定されない。
【００５１】
また、本実施形態では、プロセッサ２４０を複数のコア（マルチコア）を備えた１つのプロセッサと想定するが、プロセッサ２４０を複数のプロセッサ（マルチプロセッサ）により実現するようにしてもよい。この場合には、本実施形態の説明における「コア」を、適宜「プロセッサ」と読み替えればよい。
【００５２】
次に、本実施形態において、第１マルチコア制御部２３２と第２マルチコア制御部２３３にて制御形式を異ならせている理由について説明をする。工作機械の制御装置には、軸の位置や速度をリアルタイムに制御するために一定の周期内、または一定の時間内に実行しなければならない制御プロセスが存在する。こうした制御プロセスに関しても、ＳＭＰ型の制御形式で任意にコアの割り当てを行うと、一定の周期や時間内での実行を保証することが難しくなる可能性がある。
【００５３】
そこで、本実施形態では、ＡＭＰ型の制御方式とＳＭＰ型の制御形式を併用する。そして、第１制御プロセス群２１０では、制御プロセスを実行する各コアを固定したＡＭＰ型の制御方式により、一定の周期内、または一定の時間内に実行しなければならない制御プロセスを、所定のコアに固定的に割り当てる。これにより、この制御プロセスについて、一定のリアルタイム性を保証することが可能になる。
【００５４】
一方で、本実施形態では、第２制御プロセス群２２０を設けることにより、第１制御プロセス群２１０による割り当てとは別途に、ＳＭＰ型の制御方式で機械学習の内容を反映した最適な割り当てを行う。これにより、効果的な処理分散の最適化を行うことが可能となる。
つまり、２つの制御形式を併用することにより、一定のリアルタイム性を保証した上で、効果的な処理分散の最適化を行うことが可能となる。
【００５５】
＜制御プロセスの実行＞
次に、図３を参照して、第１マルチコア制御部２３２と第２マルチコア制御部２３３にて各コアに割り当てられた制御プロセスの実行について説明をする。
各コアは、割り当てられた制御プロセスの実行を、所定の長さの周期で、所定回数に分けて行う。例えば、図３に実行状態Ｔ１〜実行状態Ｔ４として示すように、所定の長さの周期（例えば、数ｍｓｅｃ）で、４回に分けて行う。
【００５６】
具体的には、実行状態Ｔ１では、第１コア２４１から第４コア２４４でそれぞれ、基本軸制御、拡張軸制御、前処理、通信制御のプロセスを実行する。第３コア２４３で実行していた前処理のプロセスが完了すると、次のプロセスとして第３コア２４３で、表示操作を実行し、実行状態Ｔ２へ遷移する。第１コア２４１で実行していた基本軸制御のプロセスが完了すると、第１コア２４１では同期制御のプロセスを実行し、実行状態Ｔ３へ遷移する。第２コア２４２で実行していた拡張軸制御のプロセスが完了すると、第２コア２４２では工具管理のプロセス、第４コア２４４で実行していた通信制御のプロセスが完了すると、第４コア２４４ではデバイス管理のプロセスを実行し、実行状態Ｔ４へ遷移する。
なお、この例に示すように、各制御プロセスは、１周期で実行される場合もあるし、複数周期にまたがって実行される場合もある。
【００５７】
ここで、上述したように、第１コア２４１に割り当てられる制御プロセスと、その実行順序は固定されているが、第２コア２４２、第３コア２４３及び第４コア２４４に割り当てられる制御プロセスと、その実行順序（図３にて破線で囲った部分に相当）は変更することができる。
【００５８】
機械学習装置１００は、行動情報により、第２コア２４２、第３コア２４３及び第４コア２４４に割り当てられる制御プロセスと、その実行順序（図３にて実線で囲った部分に相当）を変更して、実行状態Ｔ１からＴ４までを繰り返し実行させる。そして、実行状態Ｔ１からＴ４までを１つの状態と捉え、実行状態Ｔ１からＴ４が終了する都度、行動価値関数を更新することにより機械学習を行う。この機械学習の詳細について以下説明をする。
【００５９】
＜機械学習＞
上述した、各制御プロセスの各コアへの割り当て、及び各コアによる制御プロセスの実行と並行して、機械学習装置１００による機械学習が行われる。
この機械学習のために機械学習装置１００と制御装置シミュレータ２００の間では、図２に示すように所定の情報が送受信される。具体的には、ユーザが設定した加工条件が制御装置シミュレータ２００から機械学習装置１００に対して出力される。また、上述したようにして監視部２３１が生成した判定条件も制御装置シミュレータ２００から機械学習装置１００に対して出力される。更に、行動情報が機械学習装置１００から制御装置シミュレータ２００に対して出力される。
機械学習装置１００は、これらの入力及び出力に基づいて機械学習の１つである強化学習を行う。
【００６０】
次に、機械学習装置１００に含まれる各機能ブロックの説明に先立って、まず強化学習の基本的な仕組みについて説明する。
強化学習において、エージェント（本実施形態における機械学習装置１００に相当）は、環境（本実施形態における制御装置シミュレータ２００に相当）の状態を観測し、ある行動を選択し、当該行動に基づいて環境が変化する。環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択（意思決定）を学習する。
教師あり学習が、完全な正解を示すのに対して、強化学習における報酬は、環境の一部の変化に基づく断片的な値であることが多い。このため、エージェントは、将来にわたっての報酬の合計を最大にするように行動を選択するように学習する。
【００６１】
このように、強化学習では、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち将来的に得られる報酬を最大にする方法を学ぶ。これは、本実施形態において、工作機械を制御する各プロセスを、加工条件に応じて最適なコアに割り当てるという、未来に影響をおよぼすような行動を獲得できることを表している。
【００６２】
ここで、強化学習としては、任意の学習方法を用いることができるが、以下の説明では、或る環境の状態ｓの下で、行動ａを選択する価値Ｑ（ｓ，ａ）を学習する方法であるＱ学習（Ｑ−ｌｅａｒｎｉｎｇ）を用いる場合を例にとって説明をする。
Ｑ学習では、或る状態ｓのとき、取り得る行動ａのなかから、価値Ｑ（ｓ，ａ）の最も高い行動ａを最適な行動として選択することを目的とする。
【００６３】
しかしながら、Ｑ学習を最初に開始する時点では、状態ｓと行動ａとの組合せについて、価値Ｑ（ｓ，ａ）の正しい値は全く分かっていない。そこで、エージェントは、或る状態ｓの下で様々な行動ａを選択し、その時の行動ａに対して、与えられる報酬に基づいて、より良い行動の選択をすることにより、正しい価値Ｑ（ｓ，ａ）を学習していく。
【００６４】
また、将来にわたって得られる報酬の合計を最大化したいので、最終的にＱ（ｓ，ａ）＝Ｅ［Σ（γｔ）ｒｔ］となるようにすることを目指す。ここでＥ［］は期待値を表し、ｔは時刻、γは後述する割引率と呼ばれるパラメータ、ｒｔは時刻ｔにおける報酬、Σは時刻ｔによる合計である。この式における期待値は、最適な行動に従って状態変化した場合の期待値である。しかしＱ学習の過程において最適な行動が何であるのかは不明であるので、様々な行動を行うことにより、探索しながら強化学習をする。このような価値Ｑ（ｓ，ａ）の更新式は、例えば、次の数式（以下に［数１］として示す）により表すことができる。
【００６５】
【数１】
2019003271.tif 000003
【００６６】
上記の［数１］として示した数式において、ｓｔは、時刻ｔにおける環境の状態を表し、ａｔは、時刻ｔにおける行動を表す。行動ａｔにより、状態はｓｔ＋１に変化する。ｒｔ＋１は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態ｓｔ＋１の下で、その時に分かっている最もＱ値の高い行動ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
【００６７】
上記の［数１］は、試行ａｔの結果、返ってきた報酬ｒｔ＋１を元に、状態ｓｔにおける行動ａｔの価値Ｑ（ｓｔ，ａｔ）を更新する方法を表している。
この更新式は、状態ｓｔにおける行動ａｔの価値Ｑ（ｓｔ，ａｔ）よりも、行動ａｔによる次の状態ｓｔ＋１における最良の行動の価値ｍａｘａ  Ｑ（ｓｔ＋１，ａ）の方が大きければ、Ｑ（ｓｔ，ａｔ）を大きくし、逆に小さければ、Ｑ（ｓｔ，ａｔ）を小さくすることを示している。つまり、或る状態における或る行動の価値を、それによる次の状態における最良の行動の価値に近づける。ただし、その差は、割引率γと報酬ｒｔ＋１のあり方により変わってくるが、基本的には、ある状態における最良の行動の価値が、それに至る一つ前の状態における行動の価値に伝播していく仕組みになっている。
【００６８】
ここで、Ｑ学習では、すべての状態行動ペア（ｓ，ａ）についてのＱ（ｓ，ａ）のテーブルを作成して、学習を行う方法がある。しかし、すべての状態行動ペアのＱ（ｓ，ａ）の値を求めるには状態数が多すぎて、Ｑ学習が収束するのに多くの時間を要してしまう場合がある。
【００６９】
そこで、公知のＤＱＮ（Ｄｅｅｐ  Ｑ−Ｎｅｔｗｏｒｋ）と呼ばれる技術を利用するようにしてもよい。具体的には、価値関数Ｑを適当なニューラルネットワークを用いて構成し、ニューラルネットワークのパラメータを調整することにより、価値関数Ｑを適当なニューラルネットワークで近似することにより価値Ｑ（ｓ，ａ）の値を算出するようにしてもよい。ＤＱＮを利用することにより、Ｑ学習が収束するのに要する時間を短くすることが可能となる。なお、ＤＱＮについては、例えば、以下の非特許文献に詳細な記載がある。
【００７０】
＜非特許文献＞
「Human-level control through deep reinforcement learning」、Volodymyr Mnih1著［ｏｎｌｉｎｅ］、［平成２９年6月１日検索］、インターネット〈ＵＲＬ：http://files.davidqiu.com/research/nature14236.pdf〉
【００７１】
以上説明をしたＱ学習を機械学習装置１００が行う。
具体的には、機械学習装置１００は、制御装置シミュレータ２００から出力された加工条件と、制御装置シミュレータ２００から出力された判定情報とにより特定される状態を環境状態ｓとして観測し、当該環境状態ｓにて制御プロセスを割り当てるコアと制御プロセスの実行順序との調整を行動ａとして選択して価値Ｑを学習する。
機械学習装置１００は、価値Ｑの学習のために、行動ａをするたびに報酬を算出する。そして、機械学習装置１００は、例えば、将来にわたっての報酬の合計が最大になるように最適な行動ａを試行錯誤的に探索する。そうすることで、機械学習装置１００は、環境状態ｓに対して、最適な行動ａを選択することが可能となる。
【００７２】
このようにして機械学習装置１００は、価値関数Ｑを学習する。そして、学習した価値関数Ｑに基づいて、或る状態ｓに係る各制御プロセスのコアへの割り当てに対して適用される行動ａのうち、Ｑの値が最大となるような行動ａを選択することで、各制御プロセスの、加工条件に応じて最適なコアへの割り当てを行うことが可能となる。
【００７３】
＜機械学習装置１００の機能ブロック＞
次に、図４を参照して、上述した強化学習を行う機械学習装置１００の機能ブロックについて説明をする。
図４に示すように、機械学習装置１００は、状態情報取得部１１０、学習部１２０、行動情報出力部１３０、価値関数記憶部１４０、及び最適化行動情報出力部１５０を備える。また、学習部１２０は報酬算出部１２１、価値関数更新部１２２、及び行動情報生成部１２３を備える。
【００７４】
状態情報取得部１１０は、制御装置シミュレータ２００に設定された加工条件と、監視部２３１による監視結果に基づいて生成された判定情報とを含む状態情報ｓを制御装置シミュレータ２００から取得する。この状態情報ｓは、Ｑ学習における、環境状態ｓに相当する。
状態情報取得部１１０は、取得した状態情報ｓを学習部１２０に対して出力する。
【００７５】
学習部１２０は、或る環境状態ｓの下で、ある行動ａを選択する場合の価値Ｑ（ｓ，ａ）を学習する部分である。この学習を行うために、学習部１２０は、報酬算出部１２１、価値関数更新部１２２及び行動情報生成部１２３を備える。
【００７６】
報酬算出部１２１は、或る状態ｓの下で、行動ａを選択した場合の報酬を算出する部分である。
報酬は状態情報ｓに含まれる判定情報を用いた判定により行われる。判定条件は任意のものを用いてよい。判定条件の例としては、以下の判定条件１〜判定条件５が挙げられる。
【００７７】
判定条件１：コア間の稼働率の差（例えば、各コア間の稼働率の差の平均値）に基づいた判定
稼働率の差が大きい場合→報酬減とする
稼働率の差が小さい場合→報酬増とする
【００７８】
判定条件２：単位時間の処理量（例えば、各コアにおける単位時間の処理量の平均値）に基づいた判定
処理量が多い場合→報酬増とする
処理量が少い場合→報酬減とする
【００７９】
判定条件３：コア間通信量（例えば、各コア間における通信量の総和）に基づいた判定
通信量が多い場合→報酬減とする
通信量が少い場合→報酬増とする
【００８０】
判定条件４：消費電力量又は発熱量（例えば、各コアにおける消費電力量又は発熱量の最大値）に基づいた判定
消費電力又は発熱量が多い場合→報酬減とする
消費電力又は発熱量が少い場合→報酬増とする
【００８１】
判定条件５：キャッシュヒット率（例えば、各コアにおけるキャッシュヒット率の総和）
キャッシュヒット率が高い→報酬増とする
キャッシュヒット率が低い→報酬減とする
【００８２】
報酬算出部１２１は、これらの判定条件の内の１つに基づいて報酬を算出してもよく、複数に基づいて報酬を算出するようにしてもよい。複数に基づいて算出する場合には、各判定条件により算出された報酬の増減値を合算すればよい。この場合に、各判定条件により算出された報酬の増減値に重み付けをした上で、合算するようにしてもよい。例えば、消費電力を低減することを重視している場合には、上記判定条件４にて算出された報酬の増減値の重み付けを重くするようにするとよい。
【００８３】
また、各判定条件において、報酬の増減値を、条件を満たした度合いに応じて増加又は減少させるようにしてもよい。例えば、上記判定条件１であれば、稼働率の差が大きければ大きいほど、減少させる報酬の値を大きくするようにしてもよい。また、稼働率の差が小さければ小さいほど、増加させる報酬の値を大きくするようにしてもよい。
【００８４】
更に、本実施形態では、上述したように制御プロセスの実行を、所定の長さの周期で、所定回数に分けて行う。この所定の回数分の判定情報の平均値や最大値を算出し、最終的に、この算出した値と判定条件とを照らし合わせて、或る状態ｓの下で、行動ａを選択した場合の報酬を算出するようにしてもよい。あるいは、この所定の周期毎に判定情報を判定条件に照らし合わせて報酬の増減値を算出して記憶しておき、最終的に、記憶した所定の回数分の報酬の増減値を合算することにより、或る状態ｓの下で、行動ａを選択した場合の報酬を算出するようにしてもよい。
【００８５】
価値関数更新部１２２は、状態ｓと、行動ａと、行動ａを状態ｓに適用した場合の状態ｓ´と、上記のようにして算出された報酬の値と、に基づいてＱ学習を行うことにより、価値関数記憶部１４０が記憶する価値関数Ｑを更新する。
【００８６】
価値関数Ｑの更新は、オンライン学習で行ってもよく、バッチ学習で行ってもよく、ミニバッチ学習で行ってもよい。
オンライン学習とは、或る行動ａを現在の状態ｓに適用することにより、状態ｓが新たな状態ｓ´に遷移する都度、即座に価値関数Ｑの更新を行うという学習方法である。また、バッチ学習とは、或る行動ａを現在の状態ｓに適用することにより、状態ｓが新たな状態ｓ´に遷移することを繰り返すことにより、学習用のデータを収集し、収集した全ての学習用データを用いて、価値関数Ｑの更新を行うという学習方法である。更に、ミニバッチ学習とは、オンライン学習と、バッチ学習の中間的な、ある程度学習用データが溜まるたびに価値関数Ｑの更新を行うという学習方法である。
【００８７】
行動情報生成部１２３は、現在の状態ｓに対して、Ｑ学習の過程における行動ａを選択する。行動情報生成部１２３は、Ｑ学習の過程において、各制御プロセスを実行するコアの指定と、その実行順序の変更動作（Ｑ学習における行動ａに相当）を行わせるために、行動情報ａを生成して、生成した行動情報ａを行動情報出力部１３０に対して出力する。より具体的には、行動情報生成部１２３は、例えば、行動ａに含まれる、各制御プロセスを実行するコアの指定と、その実行順序の少なくとも何れかを１つ以上変更して出力する。
【００８８】
行動情報生成部１２３は、行動ａをランダムに選択するという方策を取るようにしてもよい。他にも、現在の推定される行動ａの価値の中で、最も価値Ｑ（ｓ，ａ）の高い行動ａを選択するグリーディ法や、ある小さな確率εでランダムに行動ａを選択し、それ以外では最も価値Ｑ（ｓ，ａ）の高い行動ａを選択するεグリーディ法といった公知の方法により、行動ａを選択する方策を取るようにしてもよい。
【００８９】
行動情報出力部１３０は、学習部１２０から出力される行動情報ａを制御装置シミュレータ２００の第２マルチコア制御部２３３に対して送信する部分である。第２マルチコア制御部２３３は、上述したように、この行動情報ａに基づいて、現在の状態ｓ、すなわち現在割り当てられている、各制御プロセスを実行するコアの指定と、その実行順序を修正することで、次の状態ｓ´（すなわち修正された、各制御プロセスを実行するコアの指定と、その実行順序）に遷移する。
【００９０】
価値関数記憶部１４０は、価値関数Ｑを記憶する記憶装置である。価値関数Ｑは、例えば状態ｓ、行動ａ毎にテーブルとして格納してもよい。価値関数記憶部１４０に記憶された価値関数Ｑは、価値関数更新部１２２により更新される。また、価値関数記憶部１４０に記憶された価値関数Ｑは、他の機械学習装置１００との間で共有されるようにしてもよい。価値関数Ｑを複数の機械学習装置１００で共有するようにすれば、各機械学習装置１００にて分散して強化学習を行うことが可能となるので、強化学習の効率を向上させることが可能となる。
【００９１】
最適化行動情報出力部１５０は、価値関数更新部１２２がＱ学習を行うことにより更新した価値関数Ｑに基づいて、価値Ｑ（ｓ，ａ）が最大となる、各制御プロセスを実行するコアの指定と、その実行順序とするための行動情報ａ（以下、「最適化行動情報」と呼ぶ）を生成する。
【００９２】
より具体的には、最適化行動情報出力部１５０は、価値関数記憶部１４０が記憶している価値関数Ｑを取得する。この価値関数Ｑは、上述したように価値関数更新部１２２がＱ学習を行うことにより更新したものである。そして、最適化行動情報出力部１５０は、価値関数Ｑと、制御装置３００に設定されている加工条件と基づいて、最適化行動情報を生成し、生成した最適化行動情報を制御装置３００に対して出力する。この最適化行動情報には、行動情報出力部１３０がＱ学習の過程において出力する行動情報と同様に、各制御プロセスを実行するコアの指定と、その実行順序が含まれる。
【００９３】
制御装置３００では、この最適化行動情報に基づいて各制御プロセスを実行するコアの指定と、その実行順序が修正される。
以上のように、機械学習装置１００を利用することで、制御装置３００における、各制御プロセスを実行するコアの指定と、その実行順序とを最適化することが可能となる。
【００９４】
＜制御装置３００の機能ブロック＞
次に、図５を参照して、制御装置３００の機能ブロックについて説明をする。ここで、上述した制御装置シミュレータ２００は、制御装置３００の機能を仮想的に再現したシミュレータである。従って、制御装置３００は、制御装置シミュレータ２００と同等の機能を有する。つまり、上述した制御装置シミュレータ２００の説明における各機能ブロックの説明を、制御装置３００における同名の機能ブロックの説明に読み替えれば、制御装置３００の説明となる。そのため、ここでは、重複する説明は省略する。
また、制御装置３００には、制御装置シミュレータ２００と同等の加工条件が設定される。加工条件の詳細については、制御装置シミュレータ２００の説明の際に上述しているので、ここでは、重複する説明は省略する。
【００９５】
ただし本実施形態では、制御装置３００は学習フェーズにおける機械学習の対象ではなく、運用フェーズにおける制御対象である点で制御装置シミュレータ２００と相違する。そのため、図５に示すように、制御装置３００の監視部３３１は、機械学習装置１００に対して判定情報を出力する必要はない。また、機械学習装置１００から出力されるのは、機械学習において試行錯誤的に出力される行動情報ではなく、機械学習の結果に基づいて出力される最適化された行動情報となる。
【００９６】
以上、機械学習装置１００、制御装置シミュレータ２００及び制御装置３００に含まれる機能ブロックについて説明した。
これらの機能ブロックを実現するために、機械学習装置１００、制御装置シミュレータ２００及び制御装置３００のそれぞれは、ＣＰＵ等の演算処理装置を備える。また、機械学習装置１００、制御装置シミュレータ２００及び制御装置３００のそれぞれは、アプリケーションソフトウェアやＯＳ等の各種の制御用プログラムを格納したＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）といった主記憶装置も備える。
【００９７】
そして、機械学習装置１００、制御装置シミュレータ２００及び制御装置３００のそれぞれにおいて、演算処理装置が補助記憶装置からアプリケーションソフトウェアやＯＳを読み込み、読み込んだアプリケーションソフトウェアやＯＳを主記憶装置に展開させながら、これらのアプリケーションソフトウェアやＯＳに基づいた演算処理を行なう。また、この演算結果に基づいて、各装置が備える各種のハードウェアを制御する。これにより、本実施形態の機能ブロックは実現される。つまり、本実施形態は、ハードウェアとソフトウェアが協働することにより実現することができる。また、本実施形態を実現するためのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。
【００９８】
なお、機械学習装置１００については機械学習に伴う演算量が多いため、例えば、パーソナルコンピュータにＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）を搭載し、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）と呼ばれる技術により、ＧＰＵを機械学習に伴う演算処理に利用するようにすると高速処理できるようになるのでよい。更には、より高速な処理を行うために、このようなＧＰＵを搭載したコンピュータを複数台用いてコンピュータ・クラスターを構築し、このコンピュータ・クラスターに含まれる複数のコンピュータにて並列処理を行うようにしてもよい。
【００９９】
＜本実施形態の動作＞
次に、図６のフローチャートを参照して本実施形態におけるＱ学習時の機械学習装置１００の動作について説明をする。
【０１００】
ステップＳ１１において、状態情報取得部１１０が制御装置シミュレータ２００から状態情報ｓを取得する。取得した状態情報は、価値関数更新部１２２や行動情報生成部１２３に対して出力される。上述したように、この状態情報ｓは、Ｑ学習における環境状態ｓに相当する情報であり、ステップＳ１１時点での、制御装置シミュレータ２００に設定された加工条件と、監視部２３１による監視結果に基づいて生成された判定情報とを含む。
【０１０１】
ステップＳ１２において、行動情報生成部１２３は新たな行動情報ａを生成し、生成した新たな行動情報ａを、行動情報出力部１３０を介して制御装置シミュレータ２００の第２マルチコア制御部２３３に対して出力する。行動情報生成部１２３は前述した方策に基づいて、新たな行動情報ａを出力する。なお、行動情報ａを受信した第２マルチコア制御部２３３は、受信した行動情報に基づいて現在の状態ｓに係る各制御プロセスを実行するコアの指定と、その実行順序を修正した状態ｓ´により、各コアに制御プロセスを実行させる。上述したように、この行動情報は、Ｑ学習における行動ａに相当するものである。
【０１０２】
ステップＳ１３において、状態情報取得部１１０は、制御装置シミュレータ２００から新たな状態ｓ´における状態情報ｓ´を取得する。なお、本実施形態では、強化学習の過程において、制御装置シミュレータ２００に設定された加工条件は変更しない。つまり、加工条件は、ステップＳ１１とステップＳ１３とで同じ内容のままとなる。
従って、状態情報ｓ´には、監視部２３１による監視結果に基づいて生成された判定情報が含まれておればよく、加工条件は含まれていなくともよい。この場合、状態情報取得部１１０は、ステップＳ１１にて取得済みの加工条件を状態情報ｓ´に含ませるようにすればよい。
取得した状態情報ｓ´は、報酬算出部１２１に対して出力される。
【０１０３】
ステップＳ１４において、報酬算出部１２１は、状態情報ｓ´に含まれる判定情報に基づいた判定を行う。報酬算出部１２１による判定の方法は、＜機械学習装置１００の機能ブロック＞の欄において上述した通りである。
【０１０４】
ステップＳ１５において、ステップＳ１４にて各判定条件に基づいて報酬を増加又は報酬を減少させると判定した結果、最終的に報酬が正の値となったか、負の値となったか、あるいはゼロとなったかを判定する。
【０１０５】
報酬が正の値となった場合は、ステップＳ１５にて「正の値」となり、ステップＳ１６に進む。そして、ステップＳ１６にて報酬として正の値を価値関数更新部１２２に対して出力する。
報酬がゼロとなった場合は、ステップＳ１５にて「ゼロ」となり、ステップＳ１７に進む。そして、ステップＳ１７にて報酬としてゼロを価値関数更新部１２２に対して出力する。
報酬が負の値となった場合は、ステップＳ１５にて「負の値」となり、ステップＳ１８に進む。そして、ステップＳ１８にて報酬として負の値を価値関数更新部１２２に対して出力する。
ステップＳ１６、ステップＳ１７及びステップＳ１８の何れかが終了すると、処理はステップＳ１９に進む。
【０１０６】
ステップＳ１９において、ステップＳ１６、ステップＳ１７及びステップＳ１８の何れかのステップにて出力された報酬の値に基づいて、価値関数更新部１２２が、価値関数記憶部１４０に記憶している価値関数Ｑを更新する。なお、ステップＳ１９はオンライン更新を例示しているが、オンライン更新に替えてバッチ更新又はミニバッチ更新に置き換えてもよい。
【０１０７】
ステップＳ２０において、学習部１２０は、強化学習を終了する条件が満たされたか否かを判定する。強化学習を終了する条件は、例えば上述した処理を、所定回数繰り返したことや、所定時間繰り返したこととする。未だ強化学習を終了する条件が満たされていない場合には、ステップＳ２０においてＮｏと判定され、処理は再度ステップＳ１１に戻る。そして、上述した処理を繰り返すことにより、価値関数Ｑは適切な値に収束していく。
一方で、強化学習を終了する条件が満たされた場合には、ステップＳ２０においてＹｅｓと判定され、処理は終了する。
【０１０８】
以上、図６を参照して説明した動作により、本実施形態では、機械学習装置１００を利用することで、各制御プロセスを実行するコアの指定と、その実行順序とを最適化するための、価値関数を得ることができる。
【０１０９】
次に、図７のフローチャートを参照して、最適化行動情報出力部１５０による最適化行動情報の生成時の動作について説明をする。
まず、ステップＳ３１において、状態情報取得部１１０が制御装置３００から状態情報ｓを取得する。
【０１１０】
ステップＳ３２において、最適化行動情報出力部１５０は、価値関数記憶部１４０に記憶している価値関数Ｑを取得する。価値関数Ｑは、上述したように価値関数更新部１２２がＱ学習を行うことにより更新したものである。
【０１１１】
ステップＳ３３において、最適化行動情報出力部１５０は、ステップＳ３１において取得した状態情報ｓに含まれる加工条件と、ステップＳ３２において取得した価値関数Ｑとに基づいて、最適化行動情報を生成する。そして、最適化行動情報出力部１５０は、生成した最適化行動情報を制御装置３００のマルチコア制御部３３３に対して出力する。この最適化行動情報は、各制御プロセスを実行するコアの指定と、その実行順序とを最適化するための情報である。
【０１１２】
制御装置３００では、この最適化行動情報に基づいて、各制御プロセスを実行するコアの指定と、その実行順序とを最適化する。
以上のように、本発明に係る機械学習装置１００を利用することで、複数の演算部を有する装置において、効果的な処理分散を行うことが可能となる。
【０１１３】
＜最適化行動情報の適用＞
次に、制御装置３００にて、最適化行動情報に基づいて、各制御プロセスを実行するコアの指定と、その実行順序とを最適化した状態について図８を参照して説明をする。本説明では、制御装置３００が、加工条件Ｓ１、加工条件Ｓ２及び加工条件Ｓ３の状態を繰り返し遷移する場合を想定する。
制御装置３００は、加工条件Ｓｎを含んだ状態情報ｓを、機械学習装置１００に入力する。これに応じて機械学習装置１００は、加工条件Ｓｎにおける最適なコアの割り当てを指示した行動情報を制御装置３００に対して提供する。
図中には、制御装置３００から加工条件Ｓｎ、実行状態Ｔｎにおける行動出力が下記のように提供された場合を示す。
【０１１４】
＜加工条件Ｓ１＞
実行状態Ｔ１：第２コア３４２で前処理、第３コア３４３で拡張軸制御、第４コア３４４で表示操作を実行
実行状態Ｔ２：第２コア３４２で前処理、第３コア３４３で通信制御、第４コア３４４で表示操作を実行
実行状態Ｔ３：第２コア３４２で前処理、第３コア３４３で通信制御、第４コア３４４で工具管理を実行
実行状態Ｔ４：第２コア３４２で前処理、第３コア３４３で通信制御、第４コア３４４でデバイス管理を実行
【０１１５】
＜加工条件Ｓ２＞
実行状態Ｔ１：第２コア３４２で前処理、第３コア３４３で拡張軸制御、第４コア３４４で表示操作を実行
実行状態Ｔ２：第２コア３４２で前処理、第３コア３４３で通信制御、第４コア３４４で表示操作を実行
実行状態Ｔ３：第２コア３４２で前処理、第３コア３４３で通信制御、第４コア３４４で工具管理を実行
実行状態Ｔ４：第２コア３４２でデバイス管理、第３コア３４３で通信制御、第４コア３４４で工具管理を実行
【０１１６】
＜加工条件Ｓ３＞
実行状態Ｔ１：第２コア３４２で拡張軸制御、第３コア３４３で通信制御、第４コア３４４で前処理を実行
実行状態Ｔ２：第２コア３４２で拡張軸制御、第３コア３４３でデバイス管理、第４コア３４４で前処理を実行
実行状態Ｔ３：第２コア３４２で拡張軸制御、第３コア３４３でデバイス管理、第４コア３４４で工具管理を実行
実行状態Ｔ４：第２コア３４２で表示操作、第３コア３４３でデバイス管理、第４コア３４４で工具管理を実行
このように、本実施形態によれば、制御プロセスを実行するコアと、その実行順序との割り当てを、複数の加工条件それぞれに応じて、最適化することが可能となる。
【０１１７】
＜本実施形態が奏する効果＞
次に、本実施形態が奏する効果についてより詳細に説明する。
前提として、制御装置による工作機械の制御では、パラメータ設定や運転モード、運転する加工プログラムなどの加工条件により、リアルタイムに制御する対象軸や、実行する処理の優先度が大幅に変化する。これは、汎用のアプリケーションによる制御と異なり、工作機械の制御に特有の特徴である。
【０１１８】
更に、工作機械の制御では、軸の制御に限らず、通信機能や表示機能、信号の入出力機能などを平行して実行するため、複数の演算部間での通信及び通信に伴う制御（例えば、同一メモリに対する排他制御など）が頻発する可能性もあり、単純に負荷を均等化しただけでは、パフォーマンスを低下させるおそれがある。
例えば、特許文献１から特許文献５に開示の技術のような一般的な技術ではこれらの問題を解決することは困難であった。
【０１１９】
しかしながら、本実施形態では、制御プロセスを実行するのに最適なコアの決定に機械学習を取り入れることで、加工条件に応じて最適な処理分散パターンを確立することができる。そのため、例えば、下記のような効果を奏する。
まず、コア間の稼働率の差を減らすことで、均等化された無駄のない稼動状態とすることができる。また、コア間通信量を減らすこと、および単位時間あたりの処理量を増やすことで、システム全体のスループットを向上することができる。更に、消費電力量や発熱量を小さくした省エネ運転、および発熱による故障の回避をすることができる。
このように、本実施形態によれば、従来に比してより有利な効果を奏することができる。
【０１２０】
＜第１変形例＞
上述の実施形態では、強化学習装置機械学習装置１００が強化学習を行うために、ユーザが強化学習の対象とする加工条件を制御装置シミュレータ２００に設定していた。しかしながら、強化学習の対象としたい加工条件が多数存在するような場合には、ユーザが逐一加工条件を入力することは煩雑である。
【０１２１】
そこで、本変形例では、より多くの加工条件を対象として自動的に強化学習を行うために、学習フェーズにおいて、様々な制御装置の状態を想定した加工条件を生成する加工条件生成部を更に追加する。
【０１２２】
本変形例の構成について図９を参照して説明をする。図９に示すように、本変形例では、学習フェーズにおいて、制御装置シミュレータ２００に加工条件生成部５００を接続する。なお、加工条件生成部５００は、独立した装置により実現してもよいが、機械学習装置１００の機能ブロックとして実現してもよい。
【０１２３】
加工条件生成部５００には、加工条件を生成するための種々の情報が入力される。例えば、図示するように、複数のパラメータ設定を含むパラメータ群や、複数の運転モードを含む運転モード群や、複数の加工プログラムを含む加工プログラム群が入力される。
【０１２４】
加工条件生成部５００は、これらの情報に含まれるパラメータ設定、運転モード、加工プログラムの内容、および組み合わせを変えることにより加工条件を自動で生成する。そして、加工条件生成部５００が生成した加工条件を制御装置シミュレータ２００に設定し、制御装置シミュレータ２００を稼動させることで、生成した加工条件についての強化学習を行う。
これにより、ユーザの負担を軽減した上で、様々な加工条件について強化学習を行うことが可能となる。
【０１２５】
なお、パラメータ設定、運転モード、加工プログラムの内容を完全にランダムに組み合わせると、現実では利用しないような加工条件についてばかり強化学習を行ってしまうようなことも考えられる。そこで、加工条件生成部５００には、ユーザが作成した現実的な加工条件を１つ、または複数入力するようにするとよい。そして、加工条件生成部５００は、この現実的な加工条件の一部を変更しながら加工条件を生成する。これにより、現実的な加工条件及びこの加工条件に類する加工条件についてのみ強化学習を行うことができる。
【０１２６】
＜第２変形例＞
運用フェーズにおいて、強化学習の対象としたことがない未知の加工条件が含まれた状態情報ｓが入力された場合には、この未知の加工条件について最適化された行動情報を出力することができない。
【０１２７】
そこで、本変形例では、未知の加工条件が含まれた状態情報ｓが入力された場合に、この未知の加工条件に最も近似する加工条件であって、強化学習の対象としたことがある既知の加工条件に変更をする。既知の加工条件については、強化学習の対象としているので、最適化された行動情報を出力することができる。
【０１２８】
本変形例の構成について図１０を参照して説明をする。図１０に示すように、本変形例では、運用フェーズにおいて、制御装置シミュレータ２００に加工条件変更部６００を接続する。なお、加工条件変更部６００は、独立した装置により実現してもよいが、機械学習装置１００の機能ブロックとして実現してもよい。
【０１２９】
そして、機械学習装置１００に、未知の加工条件（例えば加工条件Ｓａ）が含まれた状態情報ｓが入力された場合、機械学習装置１００から加工条件変更部６００に、加工条件の内容を含んだエラーを通知する。この通知を受けた加工条件変更部６００は、この未知の加工条件（例えば加工条件Ｓａ）に最も近似する加工条件であって、強化学習の対象としたことがある既知の加工条件（例えば加工条件Ｓｂ）を機械学習装置１００に対して出力する。
ここで、加工条件変更部６００が既知の加工条件の中から、未知の加工条件に最も近似する加工条件を選択する方法について図１１を参照して説明をする。
【０１３０】
図１１には、具体例として、未知の加工条件Ｓａに最も近似する加工条件を、既知の加工条件Ｓｂ、Ｓｃ、Ｓｄの中から選択する例を示す。
上述したように加工条件には様々な情報が含まれている。この様々な情報の内、運転モード、加工プログラム、及びコアの稼働状況については、加工条件Ｓａに一致していることが望ましい。そのため、未知の加工条件Ｓａとはコアの稼働状況が異なっている加工条件Ｓｃは、選択する候補から除外する。
【０１３１】
続いて、パラメータ設定に含まれる各項目の比較を行い、未知の加工条件Ｓａと一致項目が一番多い加工条件Ｓｂを加工条件Ｓａに最も近似した加工条件とみなす。
なお、何れの項目を比較する対象の情報とするかはユーザの設定等に応じて任意に選択可能とする。
【０１３２】
また、単に一致する項目の数のみに基づいて選択を行うのではなく、各項目の重み付けを行っても良い。例えば、制御軸数が一致したら５ポイント、制御主軸数が一致したら３ポイント、・・・と設定しておき、ポイントの合計値で類似する加工条件を判断するようにしてもよい。
【０１３３】
また、一般的に、制御する軸数や、有効／無効の機能が一致するほど、ＣＰＵ負荷の傾向も類似するため、これらのパラメータ設定を比較の対象としたり、重み付けを重くしたりするとよい。
【０１３４】
また、運転モード、加工プログラム、コアの稼働状況が一致しない場合、又は、パラメータ設定も一致する項目が少ない場合などは、類似する加工条件が存在しないと判定するようにしてもよい。この場合は、機械学習装置１００を利用せずに制御することを、ユーザが選択できるようにするとよい。
【０１３５】
＜第３変形例＞
上述した実施形態では、機械学習装置１００、制御装置シミュレータ２００、制御装置３００を、それぞれ別体の装置により構成したが、これら別体となっている装置の機能の一部又は全部を同一の装置により実現するようにしてもよい。
【０１３６】
また、機械学習装置１００、制御装置シミュレータ２００、制御装置３００の機能の一部又は全部を複数の装置により実現するようにしてもよい。この場合、機械学習装置１００や、制御装置シミュレータ２００や、制御装置３００の各機能を、適宜複数のサーバに分散する、分散処理システムとしてもよい。また、クラウド上で仮想サーバ機能等を利用するようにしてもよい。
【符号の説明】
【０１３７】
１  機械学習システム
１００  機械学習装置
１１０  状態情報取得部
１２０  学習部
１２１  報酬算出部
１２２  価値関数更新部
１２３  行動情報生成部
１３０  行動情報出力部
１４０  価値関数記憶部
１５０  最適化行動情報出力部
２００  制御装置シミュレータ
２１０、３１０  第１制御プロセス群
２２０、３２０  第２制御プロセス群
２３０、３３０  オペレーティングシステム
２３１、３３１  監視部
２３２、３３２  第１マルチコア制御部
２３３、３３３  第２マルチコア制御部
２４０、３４０  プロセッサ
２４１、３４１  第１コア
２４２、３４２  第２コア
２４３、３４３  第３コア
２４４、３４４  第４コア
３００  制御装置
４００  工作機械
５００  加工条件生成部
６００  加工条件変更部
【図１】
2019003271.tif 000004
【図２】
2019003271.tif 000005
【図３】
2019003271.tif 000006
【図４】
2019003271.tif 000007
【図５】
2019003271.tif 000008
【図６】
2019003271.tif 000009
【図７】
2019003271.tif 000010
【図８】
2019003271.tif 000011
【図９】
2019003271.tif 000012
【図１０】
2019003271.tif 000013
【図１１】
2019003271.tif 000014