以下に、本開示の実施の形態にかかる制御装置、機械学習装置、および、制御方法を図面に基づいて詳細に説明する。なお、以下に示す実施の形態によって本開示の技術範囲が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる制御装置10Aを備える数値制御装置1の構成を示す図である。数値制御装置1は、制御装置10Aと、変更情報記憶部17と、数値制御処理実行部18と、ログデータ記憶部19とを有する。
数値制御装置1は、図示しない複数の演算部を有する。複数の演算部は、1つのCPU(Central Processing Unit)に複数のコアを有するマルチコアCPUであってもよいし、CPUを複数有するマルチCPUであってもよい。つまり、数値制御装置1が有する演算部は、CPUが有する「コア」であってもよいし、「CPU」などの処理装置であってもよい。以下、演算部のそれぞれを「コア」と称することがある。数値制御装置1は、ソフトウェアを構成するジョブを複数の演算部のそれぞれに割り当てて実行させる。複数の演算部のそれぞれは、割り当てられたジョブを実行する。このように複数の演算部を用いることによって、数値制御装置1は、複数のジョブを並列実行させることができる。複数のジョブを並列実行させることで、数値制御装置1は、単一の演算部で順次ジョブを実行させるよりも処理能力を高めることが可能になる。
制御装置10Aは、数値制御装置1が有する複数の演算部へのジョブの割当方法を決定する機能を有する。制御装置10Aは、数値制御装置1からログデータを取得する。ログデータは、数値制御装置1が過去に実行したジョブの割当状態を特定する情報と、ジョブの実行状態を特定する情報とを含む。ここでジョブの割当状態を特定する情報は、数値制御装置1が過去に実行したジョブがどの演算部において実行されたかを特定するための情報であり、ジョブの割当状態を特定する情報に、ジョブが実行されたタイミングを特定する情報を加えると、ジョブの実行状態を特定する情報となる。例えば、ログデータは、ジョブを識別するための情報であるジョブ名と、ジョブが割り当てられている演算部を示す情報と、ジョブ毎のイベント発生時刻情報とを含む。ジョブ名、および、ジョブが割り当てられている演算部を示す情報は、ジョブの割当状態を特定する情報の一例である。ジョブ毎のイベント発生時刻情報は、ジョブが実行されたタイミングを特定する情報の一例である。制御装置10Aは、取得したログデータに基づいて各種の処理を行うことで、ジョブの割当状態を変更するための変更情報を生成し、生成した変更情報を出力する。変更情報記憶部17は、制御装置10Aが生成した変更情報を記憶する。
数値制御処理実行部18は、複数の演算部を用いて、数値制御装置1の制御対象である工作機械の数値制御処理を行う。数値制御処理実行部18は、数値制御装置1として要求される機能を実現するためのソフトウェア処理の実行部である。数値制御処理実行部18が実行する処理の具体例としては、工作機械に実行させたい加工内容を記述した加工プログラムを解析する処理、工具の経路を滑らかに指令するための補間処理、工作機械を振動させることなく、かつ素早く動作させるための速度パターンを作成する加減速処理などである。数値制御処理実行部18は、変更情報記憶部17に記憶された変更情報に従ってジョブの割当状態を変更することができる。数値制御処理実行部18は、ソフトウェアに課された制約に従って、複数の演算部のそれぞれが割り当てられたジョブを実行するタイミングを決定する。また、数値制御処理実行部18は、数値制御処理を行っている間に、ログデータを生成してログデータ記憶部19に出力する。
ログデータ記憶部19は、数値制御処理実行部18が出力するログデータを記憶する。図1では、変更情報記憶部17およびログデータ記憶部19は、数値制御装置1が備えていることとしたが、変更情報記憶部17およびログデータ記憶部19は、数値制御装置1がネットワーク経由でアクセス可能なコンピュータ、ハードディスクなどの記憶領域であってもよい。ログデータには、例えば、数値制御処理を構成しているジョブの名称、ジョブ毎に割り当てられている演算部を特定する情報、ジョブ毎のイベント発生時刻などが含まれる。ジョブは、複数の演算部への割当先を変更可能なソフトウェア上の処理単位である。ジョブは、プログラミングにおける関数のような単位だけでなく、タスク、プロセスといった関数の集合体である単位も含む。
イベントには複数の種類がある。例えば、ジョブが演算部において実行権を得たときに発生する「startイベント」、実行権を得ている実行中のジョブが割り込みジョブなど実行中のジョブよりも優先度の高いジョブによって実行権を奪われたときに発生する「preemptedイベント」、ジョブが処理を完了して実行権を手放したときに発生する「exitイベント」、ジョブが他のジョブに対して実行権を解放したときに発生する「release to xxxイベント」などがある。ここで「release to xxxイベント」の「xxx」には、対象となる他のジョブを示すジョブ名が入る。数値制御処理実行部18がイベントログの取得処理を行うためには、一般に普及しているリアルタイムOS(Operating System)などが提供するAPI(Application Programming Interface)を用いればよい。
制御装置10Aは、表示部11と、入力受付部12と、遷移図生成部13と、選択肢生成部14と、変更後遷移図推定部15と、変更情報出力部16とを有する。
表示部11は、遷移図、ジョブの割当状態の変更方法の選択肢、変更後の遷移図を含む表示画面を提供する。表示部11は、数値制御装置1の内部または外部の表示装置を用いて描画処理を行い、上記の表示画面を提供することができる。
表示部11は、遷移図生成部13が生成した遷移図を表示する遷移図表示部111と、選択肢生成部14が生成した選択肢を表示する選択肢表示部112と、変更後遷移図推定部15が推定した変更後の遷移図を表示する変更後遷移図表示部113とを有する。遷移図表示部111、選択肢表示部112および変更後遷移図表示部113のそれぞれは、表示部11が描画する1つの画面領域に、遷移図、選択肢、および変更後の遷移図のうち2つ以上が同時に含まれるように描画処理を行ってもよい。例えば、表示部11が遷移図、選択肢および変更後の遷移図を含む表示画面を提供する場合、遷移図表示部111、選択肢表示部112および変更後遷移図表示部113のそれぞれは、画面領域の一部に描画処理を行う。また、遷移図、選択肢、および変更後の遷移図のうち1つまたは2つが表示されている状態で、ユーザが切替操作を行うと、表示部11は、表示する内容を切り替えてもよい。
入力受付部12は、入力装置を用いてユーザが生成した入力情報、または、機械が生成した入力情報を受け付ける。入力受付部12は、受け付けた入力情報を、選択肢生成部14、変更後遷移図推定部15、および変更情報出力部16のそれぞれに出力することができる。
遷移図生成部13は、ログデータに基づいて、複数の演算部のそれぞれにおけるジョブの実行状態を時系列で表す遷移図を生成する。遷移図は、数値制御装置1が有する複数の演算部のそれぞれが、ある時刻においてどのジョブを実行していたかを時系列で示したものである。遷移図生成部13は、生成した遷移図を表示部11の遷移図表示部111に出力する。
選択肢生成部14は、入力受付部12が出力する入力情報が示すジョブの、割当状態の変更方法の選択肢を生成する。入力受付部12が出力する入力情報が示すジョブは、遷移図に表示されたジョブのうち指定されたジョブである。割当状態の変更方法の選択肢は、数値制御装置1のソフトウェアの各ジョブを、複数の演算部のいずれが実行するか、どのジョブと並列実行させるか、またはジョブを複数の演算部に分散させて並列に実行させるか否かといった、ジョブの割当状態をどのように変更するかに関する選択肢である。このとき選択肢生成部14は、ソフトウェアに課される制約に基づいて、「変更可能な選択肢」を生成する。ソフトウェアに課される制約とは、例えば、ソフトウェアを構成する複数のジョブのうち並列処理することができないジョブの組合せ、ジョブの順序に課される制約、ジョブを実行可能な演算部に課される制約などである。選択肢生成部14がソフトウェアに課される制約に基づいて選択肢を生成しない場合、生成された選択肢の中には、変更可能ではない選択肢が含まれる可能性がある。変更可能ではない選択肢とは、例えば、並列処理することができない複数のジョブを並列処理させる選択肢などである。選択肢生成部14は、生成した選択肢を、表示部11の選択肢表示部112に出力する。
変更後遷移図推定部15は、入力受付部12が出力する入力情報が示す選択肢に従ってジョブの割当状態を変更した場合の遷移図を、ログデータに基づいて推定する。入力受付部12が出力する入力情報が示す選択肢は、選択肢生成部14が生成した選択肢の中から選択された選択肢である。変更後遷移図推定部15は、推定した変更後の遷移図を表示部11の変更後遷移図表示部113に出力する。
変更情報出力部16は、入力受付部12が出力する入力情報が示す選択肢に従ってジョブの割当状態を変更するための変更情報を生成する。入力受付部12が出力する入力情報が示す選択肢は、選択肢生成部14が生成した選択肢の中から選択された選択肢である。入力情報は、複数の選択肢を示していることもある。複数の選択肢が選択されている場合、変更情報出力部16は、現在選択されている全ての選択肢に基づいて、変更情報を生成する。変更情報出力部16は、生成した変更情報を変更情報記憶部17に出力することができる。
変更情報は、数値制御処理実行部18に対して、ジョブの割当状態の変更を反映するための形式で記述されたデータである。例えば、変更情報は、各ジョブをどの演算部に割り当てるか、あるジョブを複数の演算部に分散させて実行させるか否かといった情報を予め定められたフォーマットに沿ったテキスト形式で記述したファイルであってもよいし、上記の情報をリアルタイムOSなどで解析可能なように記述したバイナリファイルであってもよい。
図2は、図1に示す制御装置10Aの動作を説明するためのフローチャートである。まず制御装置10Aは、ログデータ記憶部19からログデータを取得する(ステップS101)。ログデータ記憶部19から取得されたログデータは、遷移図生成部13および変更後遷移図推定部15のそれぞれに出力される。
遷移図生成部13は、ログデータに基づいて遷移図を生成する(ステップS102)。具体的には、ログデータには、ジョブ名、ジョブを実行した演算部、ジョブ毎のイベント発生時刻といったジョブの実行状態を特定する情報が含まれており、遷移図生成部13は、これらの情報に基づいて、複数の演算部のそれぞれにおけるジョブの実行状態を時系列で表す遷移図を生成する。遷移図生成部13は、生成した遷移図を遷移図表示部111に出力する。
遷移図表示部111は、遷移図生成部13が生成した遷移図を表示画面上に表示する(ステップS103)。遷移図に表示されるジョブは選択可能であり、入力受付部12は、選択されたジョブを示す入力情報を受け付けることができる。なお、ここでは、表示画面を見るユーザが、表示された遷移図に含まれるジョブを選択する入力操作を行うものとする。
図3は、図2のステップS103で遷移図表示部111が表示する遷移図の一例を示す図である。図3の横軸は時間軸である。図3のcore0,core1,core2,core3は、数値制御装置1が有する複数の演算部を示している。図3に示す複数のブロックのそれぞれは、ジョブを表している。ここでは、ブロックを塗り潰すテクスチャの種類によってジョブの種類を区別可能にしている。テクスチャを用いる他にも、遷移図表示部111は、ブロックの色、テキストなどを用いてジョブの種類を区別可能に表示することができる。テキストを用いる場合、遷移図表示部111は、ジョブを示すボックスが選択されると、ポップアップでジョブの種類などジョブの性質を示す情報をテキストなどを用いて表示することができる。図3は、演算部毎に、ジョブの実行状態を時系列で表している。なお、図3は一例であり、遷移図は、複数の演算部のそれぞれにおけるジョブの実行状態を時系列で表したものであればよい。図3では横軸が時間軸となっているが、縦軸が時間軸となっていてもよい。
ジョブの実行状態を演算部毎に時系列で表す遷移図が表示されることで、制御装置10Aのユーザは、どの演算部の負荷が高い状態かを直感的に把握することができる。また、図3の遷移図では、横軸が時間軸であるため、ジョブを示す複数のブロックが縦に重複している場合、これらのブロックが並列実行されることを示している。図3によれば、「core1」で示される演算部が、その他の演算部よりも処理負荷が高い状態であることが分かる。
ユーザは、表示された遷移図を確認して、現在の数値制御装置1がどのように動作しているかを把握することができる。ユーザは、現在の数値制御装置1がどのように動作しているかを把握した上で、それぞれの問題意識に基づいた分析を行う。例えば、数値制御装置1の処理が予め定められた期間内に完了しない場合、ユーザは、処理時間のボトルネックとなるジョブを特定したり、演算部間の負荷状況の偏りを分析したりする。ユーザは、分析の結果に基づき、問題解決のためにターゲットとするジョブを決定して選択する操作を行うことができる。
図2の説明に戻る。入力受付部12は、遷移図に表示されたジョブの選択が有るか否かを判断する(ステップS104)。遷移図に表示されたジョブの選択がない場合(ステップS104:No)、ステップS103から処理が繰り返される。
遷移図に表示されたジョブの選択がある場合(ステップS104:Yes)、つまり入力受付部12が、選択されたジョブを示す入力情報を受け付けた場合、入力受付部12は、受け付けた入力情報を選択肢生成部14に出力する。選択肢生成部14は、選択されたジョブの割当状態の変更方法の選択肢を、ソフトウェアに課される制約に基づいて生成する(ステップS105)。なお、入力情報が複数のジョブを示す場合、選択肢生成部14は、複数のジョブのそれぞれの割当状態の変更方法の選択肢を生成する。選択肢生成部14は、1つのジョブに対して、割当状態の変更方法の選択肢を1つ生成してもよいし、複数の選択肢を生成してもよい。
選択肢生成部14は、ソフトウェアに課される制約を示す制約条件情報を用いて、対象ジョブにおける静的制約条件を検証する。ここで静的制約条件とは、ジョブの演算部に対する割り当て方とは関係なく、それぞれのジョブの性質によって定められる制約条件である。例えば、静的制約条件は、「第1のジョブの実行が完了するまで第2のジョブを実行してはならない」、「第3のジョブおよび第4のジョブは並列実行してはならない」などといった条件である。静的制約条件の検証によって、数値制御装置1のソフトウェアに課された制約の範囲内で選択可能な割当状態の変更方法の選択肢が選定される。
制約条件情報は、例えば、数値制御装置1を製造するメーカのソフトウェア開発者など、数値制御装置1を制御するソフトウェアの専門知識を有する者が、予め列挙した、当該ソフトウェアに存在する制約条件を、リスト、データベースなどの形式で保存した情報である。
選択肢生成部14は、続いて、ログデータに含まれるジョブごとに割当先の演算部を示す情報を用いて、動的制約条件の検証を行う。動的制約条件とは、現在ジョブが割り当てられている演算部によって課される制約条件である。例えば、AMP(Asymmetrical Multi Processing)型のマルチコアCPUを用いている場合、ジョブとコアの性質によっては割り当てることができないコアが存在する場合がある。選択肢生成部14は、静的制約条件および動的制約条件の検証を行った結果、変更可能な選択肢を生成する。選択肢生成部14は、生成した選択肢を選択肢表示部112に出力する。
選択肢表示部112は、選択肢生成部14が生成した選択肢を表示画面上に表示する(ステップS106)。表示画面上に表示される選択肢は、選択可能であり、入力受付部12は、選択された選択肢を示す入力情報を受け付けることができる。なお、ここでは、表示画面を見るユーザが、表示された選択肢を選択する入力操作を行うものとする。
図4は、図2のステップS106で表示される選択肢の一例を示す図である。ここでは、ステップS104で選択されたジョブが3つであり、3つのジョブのそれぞれに対して、1つずつ選択肢が生成された場合を示している。選択肢表示部112は、変更対象となる選択されたジョブと、選択されたジョブの割当状態の変更方法の選択肢のうち、ソフトウェアに課される制約に基づいて、変更可能と判断された選択肢とを表示画面上に示すことができる。図4の上段に示されたジョブの割当状態の変更方法の選択肢は、処理分散であり、1つのジョブを複数のジョブ、ここでは4つのジョブに分割して、4つのジョブのそれぞれを異なる演算部で実行させることを示している。図4の中段に示されたジョブの割当状態の変更方法の選択肢は、別コアへの移動であり、「core1」で示される演算部で実行されているジョブを「core2」で示される演算部で実行するように、ジョブを実行する演算部を移動させることを示している。図4の下段に示されたジョブの割当状態の変更方法の選択肢は、別コアへの移動であり、「core2」で示される演算部で実行されているジョブを「core1」で示される演算部で実行するように、ジョブを実行する演算部を移動させることを示している。
なお、選択肢の表示方法は、図4の上段に示すように、選択肢の適用前後における模式図の変化を図示する方法であってもよいし、図4の中段および下段に示すように、リスト形式で表現する方法であってもよい。選択肢の表示方法は、ユーザが選択肢の適用前後の状態を把握することができる方法であることが望ましい。
図2の説明に戻る。入力受付部12は、表示画面上に表示された選択肢の選択が有るか否かを判断する(ステップS107)。選択肢の選択がない場合(ステップS107:No)、ステップS106から処理が繰り返される。
選択肢の選択が有る場合(ステップS107:Yes)、つまり入力受付部12が、選択された選択肢を示す入力情報を受け付けた場合、入力受付部12は、受け付けた入力情報を変更後遷移図推定部15に出力する。なお、入力受付部12が受け付ける入力情報は、1つの選択肢を示すこともあるし、複数の選択肢を示すこともある。変更後遷移図推定部15は、ログデータに基づいて、選択された選択肢に従ってジョブの割当状態を変更した後の遷移図を推定する(ステップS108)。入力情報が複数の選択肢を示す場合、変更後遷移図推定部15は、複数の選択肢に従ってジョブの割当状態を変更した後の遷移図を推定する。変更後遷移図推定部15は、推定した遷移図を変更後遷移図表示部113に出力する。
変更後遷移図表示部113は、推定された変更後の遷移図を表示画面上に表示する(ステップS109)。
図5は、図2のステップS109で表示される変更後の遷移図の一例を示す図である。ここでは、図4に示す選択肢の全てが選択された場合に生成される変更後の遷移図を示している。変更後遷移図表示部113が変更後の遷移図を表現する方法は、遷移図表示部111が遷移図を表現する方法と同様である。図5の横軸は時間軸である。図5のcore0,core1,core2,core3は、数値制御装置1が有する複数の演算部を示している。図5に示す複数のブロックのそれぞれは、ジョブを表している。ここでは、ブロックを塗り潰すテクスチャの種類によってジョブの種類を区別可能にしている。変更後遷移図表示部113は、図5に示すような変更後の遷移図と共に、変更を確定するか否かを選択入力するための操作部を表示することができる。ユーザは、変更後の遷移図を確認し、処理時間、処理負荷といった問題を解決することができるか否かを判断し、変更を確定するか否かを選択する入力操作を行う。
図2の説明に戻る。入力受付部12は、受け付けた入力情報に基づいて、変更を確定するか否かを判断する(ステップS110)。なお、「変更の確定」とは、ステップS104で選択されたジョブについて、ステップS105で生成された割当状態の変更方法の選択肢のうち、ステップS107で選択された選択肢を適用することを意味する。
変更を確定しない場合(ステップS110:No)、入力受付部12は、遷移図生成部13に入力情報を出力し、遷移図表示部111にステップS103の処理を繰り返させる。なお、このとき入力受付部12は、ステップS106から処理が繰り返されるように動作してもよい。この場合、ユーザは、ジョブの選択ではなく、選択肢の選択からやり直すことができる。
変更を確定する場合(ステップS110:Yes)、入力受付部12は、ステップS107で選択された選択肢を、確定した選択肢に追加する(ステップS111)。入力受付部12は、変更後遷移図生成部15に、選択肢の選択を完了するか否かの入力操作を受け付ける画面の表示を指示し、表示された画面に対して、ユーザが入力操作を行うと、入力受付部12は、受け付けた入力情報に基づいて、選択肢の選択を完了するか否かを判断する(ステップS112)。
選択肢の選択を完了しない場合(ステップS112:No)、入力受付部12は、変更後遷移図推定部15に入力情報を出力し、ステップS103から処理が繰り返される。なお、変更を確定した後に、ステップS103から処理が繰り返される場合、ステップS103では、ステップS107で選択された選択肢を適用した、変更後の遷移図が表示され、ステップS104では、変更後の遷移図に表示されたジョブの選択が有るか否かが判断されることになる。つまり、変更を確定した後に、ステップS103から処理が繰り返される場合、ステップS103の遷移図を表示するのは、変更後遷移図表示部113となる。
選択肢の選択を完了する場合(ステップS112:Yes)、入力受付部12は、確定した選択肢を示す情報を変更情報出力部16に出力し、変更情報出力部16は、確定した選択肢に従って数値制御処理実行部18がジョブの割当状態を変更するための変更情報を変更情報記憶部17に出力する(ステップS113)。数値制御処理実行部18が、変更情報記憶部17に記憶された変更情報に基づいて動作することで、演算部へのジョブの割当状態が変更される。
ジョブの割当状態の変更方法の選択肢は、1つのジョブに対して複数存在し得る。このため、複数のジョブのそれぞれにどの選択肢を適用したかの組合せによって、数値制御装置1の処理性能は変わってくる。適用する選択肢の組合せによっては、かえって処理性能が低下することも考えられる。このため、図5に示した動作によって、ユーザは、推定された遷移図を見ながら、生成された選択肢のうち適用する選択肢の組合せを、試行錯誤して決定することができる。
図6は、図2のステップS108の詳細を説明するためのフローチャートである。図2のステップS108において、変更後遷移図推定部15が、変更後の遷移図を推定するためには、「startイベント」、「exitイベント」など対象ジョブの実行に関するイベントの発生時刻を推定する必要がある。このため、変更後遷移図推定部15は、ログデータに基づいて、対象ジョブの割当状態変更前のイベント発生時刻に基づいて、変更後のイベント発生時刻を推定する。
まず、変更後遷移図推定部15は、ログデータに含まれるイベントログを先頭からサーチ開始する(ステップS11)。イベントログを発見すると、変更後遷移図推定部15は、発見したイベントログの示すイベントが対象ジョブのイベントであるか否かを判断する(ステップS12)。対象ジョブのイベントである場合(ステップS12:Yes)、変更後遷移図推定部15は、発見したイベントログの示すイベントが最初の「startイベント」であるか否かを判断する(ステップS13)。
対象ジョブのイベントでなかった場合(ステップS12:No)および最初の「startイベント」でなかった場合(ステップS13:No)、変更後遷移図推定部15は、次のイベントログのサーチへ進み(ステップS14)、ステップS12から処理を繰り返す。
最初の「startイベント」であった場合(ステップS13:Yes)、変更後遷移図推定部15は、発見したイベントログの発生時刻に基づいて、対象ジョブの変更適用後の「startイベント」の発生時刻を推定する(ステップS15)。
変更後遷移図推定部15は、次のイベントログのサーチへ進む(ステップS21)。イベントログを発見すると、変更後遷移図推定部15は、発見したイベントログの示すイベントが対象ジョブのイベントであるか否かを判断する(ステップS22)。対象ジョブのイベントでなかった場合(ステップS22:No)、変更後遷移図推定部15は、ステップS21の処理を繰り返す。
対象ジョブのイベントである場合(ステップS22:Yes)、変更後遷移図推定部15は、発見したイベントログの示すイベントが「exitイベント」であるか否かを判断する(ステップS23)。「exitイベント」でない場合(ステップS23:No)、変更後遷移図推定部15は、対象ジョブの変更適用後のイベント発生時刻を推定し(ステップS24)、ステップS21の処理に戻る。
「exitイベント」である場合(ステップS23:Yes)、変更後遷移図推定部15は、変更適用後の「exitイベント」の発生時刻を推定する(ステップS25)。
変更後遷移図推定部15は、ステップS21からステップS25の範囲のイベントログをサーチする(ステップS31)。変更後遷移図推定部15は、サーチ範囲のイベントログのサーチが終了したか否かを判断する(ステップS32)。サーチ範囲のサーチが終了していない場合(ステップS32:No)、変更後遷移図推定部15は、対象のイベントログが示すイベントにこれまでに変更されたイベントからの影響があるか否かを判断する(ステップS33)。影響の有無の判定基準は、予め定められている。例えば、対象のジョブに対する「releaseイベント」の発生時刻が変更された場合、変更後遷移図推定部15は、影響ありと判断する。また、対象のジョブよりも優先度の高いジョブが演算部の割当変更によって、対象のジョブと同じ演算部で実行されるようになった場合、変更後遷移図推定部15は、影響ありと判断する。対象のジョブの「startイベント」から「exitイベント」までの区間の時刻と、他のジョブの「startイベント」から「exitイベント」までの区間とが重複した場合、変更後遷移図推定部15は、影響ありと判断する。
影響がある場合(ステップS33:Yes)、変更後遷移図推定部15は、変更適用後の当該イベント発生時刻を推定し(ステップS34)、次のイベントログのサーチへ進み(ステップS35)、ステップS32の処理に戻る。影響がない場合(ステップS33:No)、変更後遷移図推定部15は、ステップS34の処理を省略して、ステップS35の処理へ進む。
サーチ範囲のサーチが終了した場合(ステップS32:Yes)、変更後遷移図推定部15は、影響ありと判定されたイベントを含むジョブ全てを対象に、ステップS11~ステップS35の処理を繰り返す(ステップS41)。
変更後遷移図推定部15は、ログデータの最終イベントまでサーチが終了したか否かを判断する(ステップS42)。ログデータの最終イベントまでサーチが終了した場合(ステップS42:Yes)、変更後遷移図推定部15は、処理を終了する。ログデータの最終イベントまでサーチが終了していない場合(ステップS42:No)、変更後遷移図推定部15は、ステップS11から処理を繰り返す。ただし、ステップS42からステップS11に戻る場合、変更後遷移図推定部15は、イベントログの先頭からではなく、影響ありと判定された最初のイベントからステップS11の処理を実行する。
以上説明したように、変更後遷移図推定部15は、ステップS11~ステップS15の処理を行うことで、選択された対象ジョブのイベントログをログデータの先頭からサーチし、最初の「startイベント」の発生時刻に基づいて、変更適用後の「startイベント」の発生時刻を推定する。イベント発生時刻の推定方法は、例えば、対象ジョブに対する「relaseイベント」のうち、現在着目している「startイベント」の直前のものの発生時刻に基づいて推定する方法がある。また、変更後遷移図推定部15は、ステップS21~ステップS25の処理を行うことで、選択された対象ジョブのイベントのうち、着目している「startイベント」の直後の「exitイベント」までに発生した全てのイベントに対して、上記のイベント発生時刻の推定方法を用いて、変更適用後のイベント発生時刻を推定する。また、変更後遷移図推定部15は、ステップS31~ステップS35の処理を行うことで、選択された対象ジョブの、現在着目している「startイベント」から「exitイベント」までの区間で発生した、他ジョブの全イベントに対して、これまでの推定で変更されたイベントからの影響の有無を判定し、影響ありと判定されたイベントに対して発生時刻の推定を行う。変更後遷移図推定部15は、ステップS41、ステップS42の処理を行うことで、ステップS31~ステップS35の処理で影響ありと判定されたイベントを含むジョブのそれぞれに対して、ステップS11~ステップS35の処理を、ログデータに含まれる最終のイベントに到達するまで繰り返す。
上記では、変更後遷移図推定部15は、割当状態を変更する前のイベント発生時刻に基づいて、割当変更後のイベント発生時刻を推定しているが、割当変更前後の演算部の性能が異なる場合、性能の差異を考慮した上で、ジョブの実行にかかる時間を把握し、イベント発生時刻を推定してもよい。
以上説明したように、実施の形態1にかかる制御装置10Aによれば、数値制御装置1が有する複数の演算部のそれぞれにおけるジョブの実行状態を時系列で表す遷移図が表示され、遷移図に表示されたジョブの割当状態の変更方法の選択肢がソフトウェアに課される制約に基づいて生成される。そして生成された選択肢の中から選択された選択肢を示す入力情報を受け付け、入力情報が示す選択肢に従って、ジョブの割当状態を変更するための変更情報が出力される。このため、並列プログラミングの専門知識を持たない者であっても、演算部へのジョブの割当状態を確認しながら調整することが容易になる。
例えば、一般的なソフトウェア開発者、製品の保守およびメンテナンスサービスを行うサービスマン、数値制御装置1を購入して、数値制御装置1を内蔵した工作機械を出荷する機械メーカなど数値制御装置1のユーザは、必ずしも並列プログラミングの専門知識を有しているとは限らない。このようなユーザであっても、制御装置10Aが表示する選択肢は、ソフトウェアに課される制約に違反しないものに絞り込まれているため、適切な調整を行うことができる。
また、制御装置10Aは、演算部に割り当てられたジョブの実行状態を時系列で示す遷移図を表示すると共に、遷移図に表示されたジョブのうち選択されたジョブの割当状態の変更方法の選択肢を生成し、生成した選択肢の中から選択された選択肢に従って割当状態を変更した後のジョブの実行状態を推定し、変更後の遷移図を表示することができる。このような構成を有することによって、数値制御装置1のユーザは、選択肢に示された変更方法を適用した場合のジョブの割当状態を確認しながら、割当状態の調整を行うことができる。
数値制御装置1の制御対象である工作機械は、工作機械自体のサイズ、種類の多様さに加えて、使用される環境もユーザ毎に様々である。このため、数値制御装置1に求められる性能および機能は千差万別であり、数値制御装置1は、この要求に応えるため、多種多様な機能を備えることが求められる。
例えば、複合加工機は、大型で複雑な構造を有する工作機械の一例である。複合加工機は、複数の主軸を有し、同時に多数の加工プログラムを並列実行しながら、加工プログラム間で同期を取りながら加工対象物を受け渡したり、複数の加工対象物を同時に加工したりすることができる。このような複合加工機においては、工具および加工対象物を移動させる多数の軸が加工槽内を複雑に動き回るため、相互に干渉しないように干渉チェックと呼ばれる機能が必要となる。こうした機能では軸の軌跡を求めるジョブで処理時間が増加する。
また、小型の工作機械、例えば主軸が1軸のみで、主軸と加工対象物との相対位置を変化させる駆動軸が3軸または4軸程度のものでは、複合加工機のように干渉チェックと呼ばれる機能は必要とされず、代わりに短時間でなるべく多くの加工プログラムを解析し、工具経路を滑らかにする機能が求められる。このような小型の工作機械においては、加工プログラムの解析を行うジョブで処理時間が増加する。
このように、数値制御装置1の制御対象である工作機械の種類によって、数値制御装置1に求められる機能および性能は異なる。さらに、これらの工作機械を用いてユーザがどのような製品を加工し、どのような目的で生産活動を行っているかといった使用環境によっても、数値制御装置1に求められる機能および性能は異なる。例えば、依頼を受けて1点物の製品の試作加工を行うユーザと、量産品に用いる部品を大量生産しているユーザとでは、数値制御装置1に求める機能および性能は全く異なる。
以上説明したように、複数の演算部を有する数値制御装置1のジョブの割当状態を、予め全てのユーザに対して最適になるように決定することは困難である。このため、制御装置10Aを用いることで、ユーザが自らの使用環境に応じて、ジョブの割当状態を容易に調整することが可能になり、数値制御装置1の有する本来の性能を十分に引き出すことが可能になる。
実施の形態2.
図7は、実施の形態2にかかる制御装置10Bの機能構成を示す図である。制御装置10Bは、数値制御装置1と別体の装置である点以外は、実施の形態1にかかる制御装置10Aと同様の機能を有するため、共通する事項については詳しい説明を省略する。
制御装置10Bは、表示部11と、入力受付部12と、遷移図生成部13と、選択肢生成部14と、変更後遷移図推定部15と、変更情報出力部16とを有する。表示部11は、遷移図表示部111と、選択肢表示部112と、変更後遷移図表示部113とを有する。
数値制御装置1は、制御装置10Bと別体の装置である。変更情報記憶部17およびログデータ記憶部19は、数値制御装置1がネットワーク経由でアクセス可能なコンピュータ、ハードディスクなどの記憶領域である。また、変更情報記憶部17は、数値制御装置1に内蔵された記憶領域であってもよい。ログデータ記憶部19についても同様に、数値制御装置1に内蔵された記憶領域であってもよい。
制御装置10Bの動作は、以下の点を除いて、図2を用いて説明した制御装置10Aの動作と同様である。制御装置10Bは、ネットワークを介してログデータ記憶部19からログデータを取得することができる。また、ログデータを保存したSDカード、USB(Universal Serial Bus)メモリなどの可搬性記憶媒体を制御装置10Bに接続することで、制御装置10Bがログデータを取得することもできる。
なお、変更情報出力部16は、制御装置10Bが制御装置10Bの外部の変更情報記憶部17に接続されている場合、変更情報記憶部17に変更情報を出力してもよいし、制御装置10Bを構成するコンピュータなどの装置上の記憶領域に変更情報を出力してもよい。
以上説明したように、実施の形態2にかかる制御装置10Bによれば、実施の形態1にかかる制御装置10Aと同様に、並列プログラミングの専門知識を持たない者であっても、演算部へのジョブの割当状態を確認しながら調整することが容易になる。
また、制御装置10Bは、数値制御装置1と別体の装置である。このため、数値制御装置1に対して、ジョブの割当状態を変更する処理を行うための処理負荷の影響が及ばないという利点がある。例えば、数値制御装置1を備えた工作機械の中には、自動化ラインに組み込まれているため、容易に運転状態を停止することができないものがある。このような場合、加工中の製品に対する影響を考慮して、数値制御装置1に数値制御処理以外の処理を実行させることは避けたい。制御装置10Bによれば、数値制御装置1は、ログデータの取得処理さえ行えば、その他の処理は、数値制御装置1と別体の制御装置10Bにおいて行うことができるため、数値制御装置1の性能への影響を抑制しつつ、ジョブの割当状態の調整を行うことが可能になる。
実施の形態3.
図8は、実施の形態3にかかる制御装置10Cを備える数値制御装置1の構成を示す図である。数値制御装置1は、制御装置10Cと、変更情報記憶部17と、数値制御処理実行部18と、ログデータ記憶部19とを有する。制御装置10Cは、表示部11と、入力受付部12と、遷移図生成部13と、選択肢生成部14と、変更後遷移図推定部15と、変更情報出力部16と、抽象化部20とを有する。表示部11は、遷移図表示部111と、選択肢表示部112と、変更後遷移図表示部113とを有する。抽象化部20は、遷移図抽象化部201と、選択肢抽象化部202と、変更後遷移図抽象化部203とを有する。
制御装置10Cは、制御装置10A,10Bの構成に加えて、抽象化部20を有する。抽象化部20は、ユーザの属性を示す識別情報に基づいて、表示部11が生成する表示画面の表示内容の抽象度を変化させる機能を有する。識別情報は、数値制御装置1の内部情報のうち、どこまでの重要度の情報に対してアクセス可能とするかを決定するための情報である。識別情報は、例えばユーザレベルと呼ばれる数値で表される。数値制御装置1を製造するメーカの開発者など、全ての内部情報に対するアクセスが許可されるユーザのユーザレベルを最高値である「4」とし、数値制御装置1を製造するメーカの保守およびサービス担当者など、一部の重要度の高い情報を除いてアクセスが許可されるユーザのユーザレベルを「3」とすることができる。また、数値制御装置1を購入し、工作機械に組み合わせて出荷する工作機械メーカの開発担当者、保守担当者、サービス担当者など、制限された情報へのアクセスが許可されるユーザのユーザレベルを「2」とし、工作機械を購入して利用するエンドユーザなど、ごく一部の情報のみへのアクセスが許可されるユーザのユーザレベルを「1」とすることができる。
重要な内部情報は、数値制御装置1のメーカおよび工作機械のメーカそれぞれの保有する企業秘密である。このため、抽象化部20を用いて、内部情報に対するアクセス制限を設けることで、各メーカの企業秘密を守り、十分な知識を有さないユーザが数値制御装置1または工作機械に不用意な変更を加えて、意図しない動作が実行されることを防ぐことが可能になる。
遷移図抽象化部201、選択肢抽象化部202、および、変更後遷移図抽象化部203のそれぞれは、識別情報に基づいて抽象化処理を行うことで、内部情報へのアクセス制限を実現する。具体的には、遷移図抽象化部201は、遷移図表示部111が生成した遷移図の描画データを取得し、ユーザの識別情報に基づいた抽象化処理を行って、処理後の描画データを遷移図表示部111に出力する。選択肢抽象化部202は、選択肢表示部112が生成した選択肢の描画データを取得し、ユーザの識別情報に基づいた抽象化処理を行って、処理後の描画データを選択肢表示部112に出力する。変更後遷移図抽象化部203は、変更後遷移図表示部113から変更後の遷移図の描画データを取得し、ユーザの識別情報に基づいた抽象化処理を行って、処理後の描画データを変更後遷移図表示部113に出力する。
なお、制御装置10Cの抽象化部20が識別情報を取得する方法は、特に制限されない。例えば、数値制御装置1のパスワードをユーザレベルごとに異なるものとしておき、数値制御装置1に予め備えられた入力装置を用いてユーザがパスワードを入力すると、入力受付部12は、パスワードの種類ごとに異なる識別情報を付与して、抽象化部20に通知することができる。
図9は、図8に示す制御装置10Cの動作を説明するためのフローチャートである。なお、図9に示す動作の一部は、図2を用いて説明した制御装置10Aの動作と同様であるため、同様の動作には同じ符号を付することでここでは詳細な説明を省略する。以下、図2と異なる点について主に説明する。
遷移図生成部13がステップS102で遷移図を生成し、遷移図表示部111が遷移図の描画データを生成すると、遷移図抽象化部201は、遷移図表示部111から遷移図の描画データを取得して遷移図の抽象化処理を行う(ステップS201)。遷移図の表示内容を抽象化する方法については、様々考えられる。例えば、具体的なジョブ名はソフトウェアの内部情報であるため、遷移図抽象化部201は、遷移図に含まれるジョブ名を抽象化または隠蔽することができる。例えば、ユーザレベルが「4」および「3」のユーザに対しては、ジョブ名をそのまま表示し、ユーザレベルが「2」および「1」のユーザに対しては、ジョブ名を「加工プログラムを解析するジョブ」などジョブの機能で表すことができる。また、遷移図の表示内容を抽象化する方法の他の例としては、ジョブ毎の情報を隠蔽し、演算部ごとに一定時間毎の処理実行時間の割合を時系列で示すことが考えられる。
図10は、図9のステップS201で抽象化された遷移図の一例を示す図である。図10に示す遷移図は、ジョブ毎の情報が隠蔽され、演算部ごとに一定時間毎の処理実行時間の割合が時系列で示されている。ジョブ毎の割当状態が示された遷移図は、数値制御処理がどのように行われているかを推定する手がかりとなりうるため、数値制御装置1を製造するメーカ外のユーザに対しては秘匿すべき情報となる場合がある。このような場合、遷移図抽象化部201は、ユーザレベルが「2」および「1」のユーザに対しては、演算部ごとの処理負荷量の時系列的な傾向が分かる程度に遷移図を抽象化することができる。図10の横軸は時間軸であり、図10のcore0,core1,core2,core3は、数値制御装置1が有する複数の演算部を示している。図10の縦軸は、演算部ごとに処理負荷量を示している。抽象化処理を行ったあとの遷移図を見たユーザは、どの演算部でどのジョブが実行されているかを知ることはできないが、どの演算部に処理負荷が集中しているかを判断することはできる。
図9の説明に戻る。選択肢生成部14がステップS105で選択肢を生成し、選択肢表示部112が選択肢の描画データを生成すると、選択肢抽象化部202は、選択肢表示部112から選択肢の描画データを取得して選択肢の抽象化処理を行う(ステップS202)。選択肢の表示内容を抽象化する方法については、様々考えられる。例えば、遷移図の抽象化と同様に、ジョブ名を抽象化または隠蔽することが考えられる。また、図10に示すように、遷移図を、演算部ごとに一定時間毎の処理実行時間の割合を時系列で示した場合、選択肢抽象化部202は、演算部ごとに変更可能な選択肢を表示するに当たって、どのジョブの割当状態を変更するかを明示せずに、どの演算部の処理をどのように他の演算部に分散するかといった情報のみを示すことができる。
図11は、図9のステップS202で抽象化された選択肢の一例を示す図である。図11に示す選択肢は、ジョブ毎の情報が隠蔽され、演算部ごとに、対象ジョブの処理負荷が占める割合と、対象ジョブの分散先となる演算部とが示されている。例えば、図11に示す抽象化された選択肢を見ることで、ユーザは、「core1」で示される演算部において、現在50%の処理負荷を占めるジョブを全ての演算部に分散させる選択肢があることが分かる。また、図11に示す抽象化された選択肢を見ることで、ユーザは、「core1」で示される演算部において、現在15%の処理負荷を占めるジョブを、「core2」または「core3」で示される特定の演算部へ移動させる選択肢があることが分かる。
図9の説明に戻る。変更後遷移図推定部15がステップS108で変更後の遷移図を推定し、変更後遷移図表示部113が変更後の遷移図の描画データを生成すると、変更後遷移図抽象化部203は、変更後遷移図表示部113から変更後の遷移図の描画データを取得して変更後の遷移図の抽象化処理を行う(ステップS203)。変更後の遷移図を抽象化する方法については、遷移図抽象化部201が遷移図を抽象化する方法と同様である。
図12は、図9のステップS203で抽象化された変更後の遷移図の一例を示す図である。図12の横軸は時間軸であり、図12のcore0,core1,core2,core3は、数値制御装置1が有する複数の演算部を示している。図12の縦軸は、演算部ごとに処理負荷量を示している。抽象化処理を行ったあとの変更後の遷移図を見たユーザは、どの演算部でどのジョブが実行されているかを知ることはできないが、どの演算部に処理負荷が集中しているかを判断することはできる。
なお、上記では、抽象化部20は、ユーザレベルが「4」および「3」のユーザと、「2」および「1」のユーザとで2段階に表示内容の抽象度を変えているが、ユーザレベルの値ごとに表示内容の抽象度を4段階に変えてもよい。ユーザの属性を示す識別情報は、上記では4段階のユーザレベルで表されているが、2段階または3段階で表されてもよいし、5段階以上で表されてもよい。
以上説明したように、実施の形態3にかかる制御装置10Cによれば、実施の形態1,2にかかる制御装置10A,10Bと同様に、並列プログラミングの専門知識を持たない者であっても、演算部へのジョブの割当状態を確認しながら調整することが容易になる。
また、制御装置10Cは、ユーザの属性を示す識別情報に基づいて、表示部11が生成する表示画面の表示内容の抽象度を変化させる機能を有する。このため、ユーザの属性に応じて、遷移図、選択肢、および変更後の遷移図を抽象化し、内部情報の開示範囲およびアクセス範囲を適切に制限することが可能になる。
制御装置10Cを用いることで、数値制御装置1のメーカおよび数値制御装置1の制御対象である工作機械のメーカは、それぞれのユーザに対してアクセスを制限すべき情報を選択し、企業機密を守ることが可能になる。
また、抽象化部20を用いて、内部情報に対するアクセス制限を設けることで、十分な知識を有さないユーザが数値制御装置1または工作機械に不用意な変更を加えて、意図しない動作が実行されることを防ぐことが可能になる。
実施の形態4.
図13は、実施の形態4にかかる制御装置10Dの構成を示す図である。制御装置10Dは、数値制御装置1と別体の装置である点以外は、実施の形態3にかかる制御装置10Cと同様の機能を有するため、共通する事項については詳しい説明を省略する。
制御装置10Dは、表示部11と、入力受付部12と、遷移図生成部13と、選択肢生成部14と、変更後遷移図推定部15と、変更情報出力部16と、抽象化部20とを有する。表示部11は、遷移図表示部111と、選択肢表示部112と、変更後遷移図表示部113とを有する。抽象化部20は、遷移図抽象化部201と、選択肢抽象化部202と、変更後遷移図抽象化部203とを有する。
数値制御装置1は、制御装置10Dと別体の装置である。変更情報記憶部17およびログデータ記憶部19は、数値制御装置1がネットワーク経由でアクセス可能なコンピュータ、ハードディスクなどの記憶領域である。また、変更情報記憶部17は、数値制御装置1に内蔵された記憶領域であってもよい。ログデータ記憶部19についても同様に、数値制御装置1に内蔵された記憶領域であってもよい。
制御装置10Dの動作は、以下の点を除いて、図9を用いて説明した制御装置10Cの動作と同様である。制御装置10Dは、ネットワークを介してログデータ記憶部19からログデータを取得することができる。また、ログデータを保存したSDカード、USBメモリなどの可搬性記憶媒体を制御装置10Dに接続することで、制御装置10Dがログデータを取得することもできる。
なお、変更情報出力部16は、制御装置10Dが制御装置10Dの外部の変更情報記憶部17に接続されている場合、変更情報記憶部17に変更情報を出力してもよいし、制御装置10Dを構成するコンピュータなどの装置上の記憶領域に変更情報を出力してもよい。
以上説明したように、実施の形態4にかかる制御装置10Dによれば、実施の形態1~3にかかる制御装置10A~10Cと同様に、並列プログラミングの専門知識を持たない者であっても、演算部へのジョブの割当状態を確認しながら調整することが容易になる。
また、制御装置10Dは、数値制御装置1と別体の装置である。このため、制御装置10Bと同様に、数値制御装置1に対して、ジョブの割当状態を変更するための処理を行うための処理負荷の影響が及ばないという利点がある。例えば、数値制御装置1を備えた工作機械の中には、自動化ラインに組み込まれているため、容易に運転状態を停止することができないものがある。このような場合、加工中の製品に対する影響を考慮して、数値制御装置1に数値制御処理以外の処理を実行させることは避けたい。制御装置10Dによれば、数値制御装置1は、ログデータの取得処理さえ行えば、その他の処理は、数値制御装置1と別体の制御装置10Dにおいて行うことができるため、数値制御装置1の性能への影響を抑制しつつ、ジョブの割当状態の調整を行うことが可能になる。
また、制御装置10Dは、抽象化部20を有する。このため、制御装置10Cと同様に、ユーザの属性に応じて、遷移図、選択肢、および変更後の遷移図を抽象化し、内部情報の開示範囲およびアクセス範囲を適切に制限することが可能になる。また、制御装置10Dは、企業機密を守ることができると共に、十分な知識を有さないユーザが数値制御装置1または工作機械に不用意な変更を加えて、意図しない動作が実行されることを防ぐことが可能になる。
実施の形態5.
図14は、実施の形態5にかかる制御装置10Eを有する数値制御装置1の構成を示す図である。数値制御装置1は、制御装置10Eと、変更情報記憶部17と、数値制御処理実行部18と、ログデータ記憶部19とを有する。
制御装置10Eは、表示部11と、入力受付部12と、遷移図生成部13と、選択肢生成部14と、変更後遷移図推定部15と、変更情報出力部16と、抽象化部20と、機械学習装置30とを有する。表示部11は、遷移図表示部111と、変更後遷移図表示部113とを有する。抽象化部20は、遷移図抽象化部201と、変更後遷移図抽象化部203とを有する。制御装置10Cが、選択肢を表示画面上に表示して、生成された選択肢の中からユーザが選択した選択肢を示す入力情報を得る構成を有するのに対して、制御装置10Eは、機械学習装置30を有し、機械学習装置30が、生成された選択肢の中から適用する選択肢を選択する機能を有する点で制御装置10Cと異なる。以下、制御装置10Cと異なる点について主に説明し、共通する点については詳細な説明を省略する。
遷移図生成部13は、実施の形態3と同様の動作に加えて、生成した遷移図の元となる各ジョブのイベントログを機械学習装置30に出力する。
選択肢生成部14は、実施の形態3と同様の動作で選択肢を生成し、生成した選択肢を機械学習装置30に出力する。
変更後遷移図推定部15は、実施の形態3と同様の動作に加えて、変更後の遷移図を推定すると、推定した変更後の遷移図の元となる各ジョブのイベントログの推定データを機械学習装置30に出力する。
機械学習装置30は、選択された選択肢を示す入力情報と、遷移図および変更後の遷移図のイベントログが示すジョブの割当状態とに基づいて、変更後のジョブの割当状態を学習する。機械学習装置30は、選択肢生成部14が生成した選択肢の中から、適用する選択肢を選択し、選択した選択肢を示す入力情報を生成して入力受付部12に出力する。入力受付部12は、選択された選択肢を示す入力情報を変更後遷移図推定部15および変更情報出力部16のそれぞれに出力する。この場合、変更後遷移図推定部15は、学習結果に従ったジョブの割当状態を示す変更後の遷移図を推定し、変更後遷移図表示部113は、学習結果に従ったジョブの割当状態を示す変更後の遷移図を表示することになる。またこのとき、変更情報出力部16は、学習結果に従ったジョブの割当状態を実現するための変更情報を出力することになる。
図15は、図14に示す機械学習装置30の機能構成を示す図である。機械学習装置30は、状態観測部31と、学習部32とを有する。学習部32は、報酬計算部33と、関数更新部34と、行動選択部35とを有する。
状態観測部31は、数値制御装置1が有する複数の演算部のそれぞれにおける過去のジョブの実行状態、および、変更情報に従ってジョブの割当状態を変更した場合に推定されるジョブの実行状態を示す情報を、状態変数として観測する。具体的には、状態観測部31は、遷移図生成部13から遷移図の元となるイベントログを取得し、変更後遷移図推定部15から変更後の遷移図の元となるイベントログの推定データを取得し、取得したイベントログを状態変数として観測する。
学習部32は、状態変数に基づいて作成されるデータセットに従って、最適なシステム構成、具体的には、複数の演算部へのジョブの割当状態を学習する。
学習部32は、どのような学習アルゴリズムを用いてもよい。一例として、学習部32が強化学習を用いる場合について説明する。強化学習は、ある環境内における行動主体が、現在の状態を観測し、取るべき行動を決定する、というものである。ここで行動主体は、エージェントと呼ばれる。エージェントは、行動を選択することで環境から報酬を得て、一連の行動を通じて報酬が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Q学習、TD学習などが知られている。例えば、Q学習の場合、行動価値関数Q(s,a)の一般的な更新式である行動価値テーブルは以下の数式(1)で表される。
数式(1)において、stは時刻tにおける環境を表し、atは時刻tにおける行動を表す。行動atにより、環境はst+1に変わる。具体的には、本実施の形態では、環境sは、ジョブの実行状態であり、行動aは、選択された選択肢である。rt+1は、その環境の変化によって得られる報酬を表し、γは割引率を表し、αは学習係数を表す。なお、γは0よりも大きく、1以下の値を取り、αは0よりも大きく、1以下の値をとる。Q学習を適用した場合、最適なシステム構成が行動atとなる。
数式(1)で表される更新式は、時刻t+1における最良の行動aの行動価値Qが、時刻tにおいて実行された行動aの行動価値Qよりも大きければ、行動価値Qを大きくし、逆の場合は、行動価値Qを小さくする。換言すれば、時刻tにおける行動aの行動価値Qを、時刻t+1における最良の行動価値に近づけるように、行動価値関数Q(s,a)を更新する。それにより、或る環境における最良の行動価値が、それ以前の環境における行動価値に順次伝搬していくようになる。
報酬計算部33は、状態変数に基づいて報酬を計算する。報酬計算部33は、一定周期内に実行すべきジョブの完了までに要する処理時間と、その際の複数の演算部の利用効率とに基づいて、報酬rを計算する。例えば、一定周期内に実行すべきジョブの完了時刻が早まった場合、複数の演算部間で処理負荷の偏りが減少した場合には、報酬計算部33は、報酬rを増大させる。報酬rを増大させる方法は特に制限されないが、例えば、報酬rに「1」を加算することが考えられる。また、一定周期内に実行すべきジョブの完了時刻が延長した場合、複数の演算部間で処理負荷の偏りが増大した場合、報酬計算部33は、報酬rを低減する。報酬rを低減させる方法は特に制限されないが、例えば、報酬rから「1」を減算することが考えられる。一定周期内に実行すべきジョブの完了までに要する処理時間と、その際の複数の演算部の利用効率とは、公知の方法に従って抽出される。例えば、報酬計算部33は、一定周期内に実行すべきジョブの完了時刻をログデータから取得し、その平均をとることで処理時間を算出することができる。また、報酬計算部33は、ログデータの取得時刻の範囲内において、複数の演算部がそれぞれジョブを実行している時間と、ジョブを実行していない時間との総和を取り、複数の演算部の利用効率を算出することができる。
関数更新部34は、報酬計算部33によって計算される報酬に従って、最適なシステム構成を決定するための関数を更新する。例えばQ学習の場合、数式(1)で表される行動価値関数Q(st,at)を、最適なシステム構成を算出するための関数として用いる。関数更新部34は、更新後の行動価値関数Q(st,at)を、行動選択部35に出力することができる。
行動選択部35は、関数更新部34が出力する行動価値関数Q(st,at)に基づいて、行動aを選択する。具体的には、行動選択部35は、選択肢生成部14が生成した選択肢の中から、適用する選択肢を選択し、選択した選択肢を示す入力情報を生成して入力受付部12に出力する。このとき行動選択部35が行動aを選択する方法は、特に制限されない。例えば、行動選択部35は、行動価値関数Q(st,at)の最も高い行動a’を選択するgreedy法を用いてもよいし、確率εでランダムに行動a’を選択し、確率(1-ε)で行動価値関数Q(st,at)が最も高い行動a’を選択するε-greedy法を用いてもよい。
入力受付部12は、行動選択部35から入力情報を受け付けると、入力情報を変更後遷移図推定部15に出力する。変更後遷移図推定部15は、行動選択部35によって選択された選択肢に基づいて、変更後の遷移図を推定し、推定した遷移図の元となるイベントログの推定データを状態観測部31に出力することとなる。最適な行動aが確定した場合、行動選択部35は、入力受付部12に確定した行動aを出力し、入力受付部12は、変更情報出力部16にその結果を変更情報として出力するように通知する。
なお、機械学習が繰り返されている間、機械学習装置30は、表示部11を用いて途中経過の遷移図を表示する必要はない。最適な行動aの選択が確定した後、上記では、入力受付部12が、確定した行動aを自動的に出力することとしたが、機械学習装置30は、変更後遷移図推定部15および変更後遷移図表示部113を用いて、確定した行動aが示す選択肢を適用した場合の遷移図を表示させてもよい。この場合、変更後遷移図表示部113は、変更後の遷移図と共に、変更を確定するか否かを選択入力するための操作部を表示し、ユーザが操作部を操作することで、変更を確定してもよい。この場合、入力受付部12は、ユーザが操作部を操作したことを検知すると、変更を確定するように変更情報出力部16に出力する。
なお、本実施の形態では、学習部32が用いる学習アルゴリズムは強化学習としたが、本実施の形態はかかる例に限定されない。学習部32は、強化学習以外にも、教師あり学習、教師なし学習、または、半教師あり学習といった学習アルゴリズムを用いることも可能である。また学習部32は、特徴量そのものの抽出を学習する深層学習を用いることもでき、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどを用いてもよい。
以上説明したように、実施の形態5にかかる制御装置10Eによれば、実施の形態1~4にかかる制御装置10A~10Dと同様に、並列プログラミングの専門知識を持たない者であっても、演算部へのジョブの割当状態を確認しながら調整することが容易になる。
また、制御装置10Eは、抽象化部20を有する。このため、制御装置10C,10Dと同様に、ユーザの属性に応じて、遷移図、選択肢、および変更後の遷移図を抽象化し、内部情報の開示範囲およびアクセス範囲を適切に制限することが可能になる。また、制御装置10Eは、企業機密を守ることができると共に、十分な知識を有さないユーザが数値制御装置1または工作機械に不用意な変更を加えて、意図しない動作が実行されることを防ぐことが可能になる。
さらに、制御装置10Eの機械学習装置30は、ジョブの割当状態の学習結果に基づいて、選択肢生成部14が生成した選択肢の中から、適用する選択肢を選択する機能を有する。このため、ユーザは試行錯誤することなく、適用する選択肢を選択して、ジョブの割当状態を調整することが可能になる。
なお、制御装置10Eは、抽象化部20を有することとしたが、抽象化部20を省略してもよい。また、機械学習装置30は、数値制御装置1が備える制御装置10Eに内蔵されることとしたが、数値制御装置1と別体の装置であってもよい。この場合、機械学習装置30と数値制御装置1とは、ネットワークを介して接続される。
実施の形態6.
図16は、実施の形態6にかかる制御装置10Fの構成を示す図である。制御装置10Fは、数値制御装置1と別体の装置である点以外は、実施の形態5にかかる制御装置10Eと同様の機能を有するため、共通する事項については詳しい説明を省略する。
制御装置10Fは、数値制御装置1と別体の装置である点を除いて、制御装置10Eと同様の機能を有する。制御装置10Fは、表示部11と、入力受付部12と、遷移図生成部13と、選択肢生成部14と、変更後遷移図推定部15と、変更情報出力部16と、抽象化部20と、機械学習装置30とを有する。表示部11は、遷移図表示部111と、変更後遷移図表示部113とを有する。抽象化部20は、遷移図抽象化部201と、変更後遷移図抽象化部203とを有する。
数値制御装置1は、制御装置10Fと別体の装置である。変更情報記憶部17およびログデータ記憶部19は、数値制御装置1がネットワーク経由でアクセス可能なコンピュータ、ハードディスクなどの記憶領域である。また、変更情報記憶部17は、数値制御装置1に内蔵された記憶領域であってもよい。ログデータ記憶部19についても同様に、数値制御装置1に内蔵された記憶領域であってもよい。
制御装置10Fの動作は、以下の点を除いて、制御装置10Eの動作と同様である。制御装置10Fは、ネットワークを介してログデータ記憶部19からログデータを取得することができる。また、ログデータを保存したSDカード、USBメモリなどの可搬性記憶媒体を制御装置10Fに接続することで、制御装置10Fがログデータを取得することもできる。
なお、変更情報出力部16は、制御装置10Fが制御装置10Fの外部の変更情報記憶部17に接続されている場合、変更情報記憶部17に変更情報を出力してもよいし、制御装置10Fを構成するコンピュータなどの装置上の記憶領域に変更情報を出力してもよい。
以上説明したように、実施の形態6にかかる制御装置10Fによれば、実施の形態1~5にかかる制御装置10A~10Eと同様に、並列プログラミングの専門知識を持たない者であっても、演算部へのジョブの割当状態を確認しながら調整することが容易になる。
また、制御装置10Fの機械学習装置30は、ジョブの割当状態の学習結果に基づいて、選択肢生成部14が生成した選択肢の中から、適用する選択肢を選択する機能を有する。このため、ユーザは試行錯誤することなく、適用する選択肢を選択して、ジョブの割当状態を調整することが可能になる。
また、制御装置10Fは、数値制御装置1と別体の装置である。このため、ジョブの割当状態を変更するための処理を行うための処理負荷、機械学習装置30が行う機械学習処理の処理負荷などの影響が数値制御装置1に対して及ばないという利点がある。例えば、数値制御装置1を備えた工作機械の中には、自動化ラインに組み込まれているため、容易に運転状態を停止することができないものがある。このような場合、加工中の製品に対する影響を考慮して、数値制御装置1に数値制御処理以外の処理を実行させることは避けたい。制御装置10Fによれば、数値制御装置1は、ログデータの取得処理さえ行えば、その他の処理は、数値制御装置1と別体の制御装置10Fにおいて行うことができるため、数値制御装置1の性能への影響を抑制しつつ、ジョブの割当状態の調整を行うことが可能になる。
なお、実施の形態5では機械学習装置30は数値制御装置1に内蔵されており、実施の形態6では機械学習装置30は数値制御装置1と別体の制御装置10Fに内蔵されていることとしたが、本実施の形態はかかる例に限定されない。機械学習装置30は、数値制御装置1および制御装置10Fの両方と別体の装置であってもよい。
続いて、ハードウェア構成について説明する。実施の形態1~6にかかる制御装置10A~10Fは、処理回路により実現される。これらの処理回路は、専用のハードウェアにより実現されてもよいし、CPUを用いた制御回路であってもよい。
上記の処理回路が、専用のハードウェアにより実現される場合、これらは、図17に示す処理回路90により実現される。図17は、実施の形態1~6にかかる制御装置10A~10Fの機能を実現するための専用のハードウェアを示す図である。処理回路90は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはこれらを組み合わせたものである。
上記の処理回路が、CPUを用いた制御回路で実現される場合、この制御回路は例えば図18に示す構成の制御回路91である。図18は、実施の形態1~6にかかる制御装置10A~10Fの機能を実現するための制御回路91の構成を示す図である。図18に示すように、制御回路91は、プロセッサ92と、メモリ93とを備える。プロセッサ92は、CPUであり、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、DSP(Digital Signal Processor)などとも呼ばれる。メモリ93は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(登録商標)(Electrically EPROM)などの不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD(Digital Versatile Disk)などである。
上記の処理回路が制御回路91により実現される場合、プロセッサ92がメモリ93に記憶された、各構成要素の処理に対応するプログラムを読み出して実行することにより実現される。また、メモリ93は、プロセッサ92が実行する各処理における一時メモリとしても使用される。
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、実施の形態同士を組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。