(58)【調査した分野】(Int.Cl.,DB名)
センサが検知した制御対象の状態に基づいて、前記状態に関する量を算出し、算出した前記状態に関する量についてのデータである状態に関するデータを取得する観測部と、
学習時における前記状態に関するデータを入力して得られた検出学習モデルと、運用時における前記状態に関するデータとに基づいて、前記制御対象の異常予兆を検出する異常予兆検出部と、
前記異常予兆の検出結果に基づいて、前記制御対象の動作の良否を評価した量である報酬を算出する報酬算出部と、
学習時における前記状態に関するデータを算出学習モデルに入力して得られた制御パラメータの制御量を、前記制御対象を制御する基準となる基本制御量として算出する基本制御量算出部と、
前記基本制御量と、運用時における前記状態に関するデータと、前記報酬とに基づいて、前記報酬が所定の条件を満たす制御量を探索し、探索した前記制御量と当該制御量による制御を実行するための制御パラメータとを出力する制御量探索部と、
探索した前記制御量と前記制御パラメータとに基づいて、前記制御対象への指令値を生成する制御部と、
を備えることを特徴とする制御装置。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、本実施例における制御装置、制御方法、および制御プログラムの実施の形態を詳細に説明する。本実施例では、制御装置の制御対象としてエンジンを例に挙げて説明しているが、モータやタービンをはじめとする様々な原動機やポンプ、あるいはそれらが組み込まれた車両や船舶、ロボットなどの移動体についても同様に適用することができる。以下、エンジンを含むシステムと、このシステムの状態を計測するためのセンサと、センサから得られるデータをもとにシステムに指令値を与えるコントローラとからなる制御系において、熱効率が良くなるようにエンジンを制御することを考える。
【0010】
図1に全体の構成を示す。システム101は、原動機とこれが作用する対象からなり、ここでは原動機としてエンジンが用いられているものとする。また、センサ部102は、エンジンを含むシステム101の状態を計測するためのセンサからなる。ここでは、一例として、水素流量、回転数、トルク、筒内圧を計測可能なセンサが備えられているものとする。また、コントローラ103は、センサ部102とシステム101に接続されており、センサ部102からセンサデータが入力され、システム101に指令値を出力できるものとする。
【0011】
また、コントローラ103には、複数の機能が備えられているものとする。具体的には、コントローラ103は、複数センサデータの入力を得た上で、これにもとづきシステム101の状態に関する量を算出する観測部104と、観測部104より得られるシステム101の状態と異常予兆検出部110より検出されるシステム101やシステム101を構成するエンジンの異常の予兆の有無(以下、異常予兆検出結果)とにもとづいてシステム101の動作の良否を評価した量(以下、報酬)を算出する報酬算出部111と、異常予兆検出のための検出事前学習用データベース106をもとに異常の予兆の検出を学習し、この学習結果にもとづいて異常予兆検出結果を算出する異常予兆検出部110と、算出事前学習用データベース108をもとに制御量を探索する際の基準となる制御量(以下、基本制御量)を算出するための学習を行い、この学習結果にもとづいて基本制御量を算出する基本制御量算出部113と、基本制御量算出部113より得られた基本制御量をもとに、報酬が大きくなるようなシステムの制御量を探索し、当該制御量によりシステム101を制御するための制御量を出力する制御量探索部112と、制御量探索部112が出力した制御量に対応する原動機への指令値を出力する制御部105とを有している。
【0012】
また、コントローラ103は、異常予兆検出部110の学習に用いる検出事前学習用データベース106と、異常予兆検出部111の学習結果を保持する異常予兆検出のための検出学習モデルデータベース107と、基本制御量算出部113の学習に用いる基本制御量算出のための算出事前学習用データベース108と、基本制御量算出部113の学習結果を保持する基本制御量算出のための算出学習モデルデータベース109とを記憶する。
【0013】
また、ここでは図示していないが、コントローラ103は、ハードウェアとしては、PC(Personal Computer)等の一般的なコンピュータにより構成され、CPU(Central Processing Unit)、メモリ、外部記憶装置、通信I/F(インタフェース)、出力装置、入力装置等の各部を備えている。コントローラ103を構成するこれらの各部は、内部バス等の内部通信線により電気的に接続されている。
【0014】
CPUは、外部記憶装置に記憶されている各種プログラムを読み出してメモリにロードして実行することにより、コントローラ103の各種機能を実現する。メモリは、例えば、データの読書き可能なRAM(Random Access Memory)から構成され、CPUにより上記各種プログラムがロードされる。外部記憶装置は、例えば、ROM(Read Only Memory)等の記憶媒体、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の記憶装置から構成され、コントローラ103の処理に必要な各種プログラムを記憶する。
【0015】
なお、上記各種プログラムは、通信I/Fを介してネットワークから外部記憶装置にダウンロードされ、メモリ上にロードされて、CPUにより実行されるようにしてもよい。また、CD(Compact Disk)やDVD(Digital Versatile Disk)等の可搬性を有するコンピュータで読み取り可能な記憶媒体に対して情報を読み書きする読書装置を介して、当該記憶媒体からメモリ上に直接ロードされCPUにより実行されるようにしてもよい。
【0016】
さらには、上記各種プログラムが、コンピュータにインストール可能な形式又は実行可能な形式のファイルで上記記憶媒体に記録されて提供されてもよい。さらには、上記各種プログラムが、通信ネットワークに接続されたコンピュータ上に格納され、ネットワーク経由でダウンロードにより提供されてもよい。
【0017】
また、ここでは、コントローラ103の各部については、ソフトウェアとしての実装を想定しているが、それらのすべてまたは一部をハードウェアとして実装してもよい。また、センサ部102を除く各部については、コントローラ103と通信可能な遠隔地に設けられていても良い。また、以上の各部をなすハードウェアやソフトウェアは、実施形態に応じて取捨選択しても良い。
【0018】
また、筒内圧を計測可能なセンサとしては、ここでは燃焼圧力センサを想定するが、筒内圧と相関がある量を計測可能なセンサであれば他のセンサであってもよい。例えば、エンジンに設置したひずみセンサを用いてもよいし、筒内圧の変化が音や振動として計測可能ならマイクや振動センサを用いてもよい。あるいは熱の変化を計測可能なカメラを用いて、筒内圧の変化を計測できるのであればそれらのカメラを用いてもよい。
【0019】
以上に示した制御系において、エンジンを制御するにあたり、処理の段階として、大きく事前学習フェーズと運用フェーズの2つのフェーズを想定する。
【0020】
ここで、事前学習フェーズとは、異常予兆検出部110と基本制御量算出部113が、予め準備した学習データを用いた学習により、異常予兆の検出と制御量の算出ができるようにする段階をさす。また、運用フェーズとは、事前学習済みの異常予兆検出部110と基本制御量算出部113を用いて、エンジンの制御を行う段階をさす。
【0021】
まず、事前学習フェーズについて述べる。事前学習フェーズでは、異常予兆検出部110と基本制御量算出部113のそれぞれについて、データベースを用いた学習が行われる。
【0022】
このうち、まず、異常予兆検出部110の処理について述べる。まず、ここでの異常の予兆とは、制御対象とするシステムによって定義されるが、ここではエンジンの制御を想定しており、異常燃焼に伴うノッキングを異常と定義し、また、そのノッキングによって筒内圧波形が乱れる(通常の筒内圧波形に対して、ノイズがのってくる)ことを異常の予兆と定義する。この定義のもと、異常予兆検出部110の処理を
図2に示す。コントローラ103は、入力装置等を介して異常予兆検出の処理開始の指示を受けると(ステップ201)、事前学習フェーズか運用フェーズかを判定するための選択処理を実行する(ステップ203)。コントローラ103は、事前学習フェーズであると判定した場合(ステップ203;Yes)、ステップ0204として、異常予兆検出部110は、検出事前学習用データベース106からデータを取得する。なお、コントローラ103が、事前学習フェーズでないと判定した場合(ステップ203;No)、ステップ209以降の処理を実行するが、これらの処理については後述する。
【0023】
ここで、検出事前学習用データベース106のデータ例を
図3に示す。
図3の上段に示すように、検出事前学習用データベース106に格納されているデータは、異常予兆ラベル301と、エンジンの状態を表すデータ302〜307とが対応付けて記憶されている。これらの状態のデータは、システム101内のエンジンを、センサ部102で計測することで得られたデータである。これらの状態データには、エンジンの燃焼の1サイクル毎のデータとして、水素流量302、回転数303、トルク304、筒内圧305〜筒内圧307(筒内圧1〜N)といった、エンジンの燃焼の1サイクル分の燃焼圧力の時間変化に対応するデータが記録されている。加えて、このデータが得られた際のシステム101やシステム101を構成するエンジンの異常の予兆の有無を表す異常予兆ラベル301が記録されている。異常予兆ラベル301には、例えば、当該異常予兆ラベル301に対応付けて記憶されている状態データが異常の予兆に対応する場合には「1」、そうでない場合には「0」が設定される。異常予兆ラベル301の設定については後述する。
【0024】
なお、状態データ302〜307では、エンジンの燃焼の1サイクル分のみ例示しているが、事前の試運転などで得られた複数サイクル分の状態データが、同様にデータベースに記録されているものとする。
【0025】
次に、異常予兆検出部110は、事前学習フェーズにおいては、検出事前学習用データベース106を用いて異常予兆の検出処理の学習を行う。この際、状態データを周波数領域でのデータに変換して、その上で学習の処理を行うが、この周波数領域でのデータへの変換処理として、まず、短時間フーリエ変換を実行する(ステップ205)。より詳しくは、異常予兆検出部110は、状態データのうち、筒内圧データに対して時間窓を設定し、設定した時間窓のそれぞれについて、短時間フーリエ変換を実行する。これにより、異常予兆検出部110は、時間窓毎に、周波数帯域毎のパワースペクトルを得る。
【0026】
異常予兆検出部110は、結果として、
図3の下段に示すように、例えば、状態データである筒内圧1〜Nのそれぞれについて、短時間フーリエ変換によって得られるデータ308〜310(以下、FFTデータ1〜N)を、
図3の上段に示した異常予兆ラベル301、水素流量302、回転数303、トルク304、筒内圧305〜筒内圧307(筒内圧1〜N)に対応付けて格納する。このように、異常予兆検出部110は、コントローラ103のメモリに、短時間フーリエ変換の結果に関するデータを記憶する。なお、周波数領域のデータへの変換手法として、ここでは短時間フーリエ変換の利用を想定しているが、同様の効果が得られるならば他の手法を用いてもよい。例えば、ウェーブレット変換を用いても良い。次に、ここまでに得られているデータについて、異常予兆検出部110は、FFTデータについて、正規化処理を実行する(ステップ206)。これにより、データ間の大きさなどが、特定のルールに沿って揃えられる。
【0027】
次に、異常予兆検出部110は、DNN(Deep Neural Network)による異常予兆検出の学習に関する処理を実行する(ステップ207)。今、異常予兆検出部110には、分類を行うためのニューラルネットワークが構成されているものとする。ここで、当該ニューラルネットワークに対し、状態データのうち、筒内圧305〜筒内圧307(筒内圧1〜N)より上記の処理で得られたFFTデータを入力し、この入力によってニューラルネットワークより得られる出力値と、入力したFFTデータに対応する異常予兆ラベル301との差を用い、この差が小さくなるようにニューラルネットワークを更新する、いわゆる学習の処理を行い、異常予兆の有無を検出するニューラルネットワークのモデル(以下、検出学習モデル)を求める。これら一連の学習に関する処理によって、異常予兆検出部110は得られた状態データのうち筒内圧のデータを用いて、異常予兆の有無を判定できるようになる。なお、学習手法として、ここではDNNの利用を想定しているが、同様の効果が得られるならば他の手法を用いてもよい。
【0028】
次に、異常予兆検出部110は、ステップ207において得られた検出学習モデルを検出学習モデルデータベース107に記録する(ステップ208)。その後、コントローラ103は、入力装置等を介して異常予兆検出の処理終了の指示を受けたか否かを判定し(ステップ215)、上記処理終了の指示を受けたと判定した場合(ステップ215;Yes)、処理を終了する(ステップ202)。一方、コントローラ103は、上記処理終了の指示を受けていないと判定した場合(ステップ215;No)、ステップ203に戻り、以降の処理を繰り返す。事前学習フェーズにおける異常予兆検出部110の学習に関する処理は、ここまでとなる。
【0029】
次に、基本制御量算出部113の処理について述べる。基本制御量算出部113の処理を
図4に示す。コントローラ103は、入力装置等を介して基本制御量算出の処理開始の指示を受けると(ステップ401)、事前学習フェーズか運用フェーズかの選択処理を実行する(ステップ403)。コントローラ103は、事前学習フェーズであると判定した場合(ステップ403;Yes)、ステップ404として、基本制御量算出部113は、算出事前学習用データベース108からデータを取得する。なお、コントローラ103が、事前学習フェーズでないと判定した場合(ステップ403;No)、ステップ408以降の処理を実行するが、これらの処理については後述する。
【0030】
ここで、算出事前学習用データベース108のデータ例を
図5に示す。
図5に示すように、算出事前学習用データベース108に格納されているデータは、
図3に示した状態データ302〜307と同様の状態データ502〜507と、当該状態データが得られた際に設定した制御パラメータ(例えば、点火時期)毎の制御量とが対応付けて記憶されている。ここでの状態データは、システム101内のエンジンをセンサ部102で計測することで得られた状態に関するデータである。これらの状態データには、
図3に示した検出事前学習用データベース106と同様、エンジンの燃焼の1サイクル毎のデータとして、水素流量502、回転数502、トルク503、筒内圧505〜筒内圧507(筒内圧1〜N)といった、エンジンの燃焼の1サイクル分の燃焼圧力の時間変化に対応するデータが記録されている。加えて、これらのデータが得られた際に設定した制御量として、点火時期501が記録されている。なお、状態データ502〜507では、エンジンの燃焼の1サイクル分のデータのみが表現されているが、事前の試運転などで得られた複数サイクル分のデータが同様にデータベースに記録されているものとする。
【0031】
次に、ここまでに得られているデータについて、基本制御量算出部113は、点火時期501以外の状態データについて正規化処理405を実行する(ステップ405)。これにより、データ間の大きさなどが、特定のルールに沿って揃えられる。
【0032】
次に、基本制御量算出部113は、DNNによる基本制御量算出の学習に関する処理を実行する(ステップ406)。今、基本制御量算出部113には、回帰を行うためのニューラルネットワークが構成されているものとする。ここで、当該ニューラルネットワークに対し、状態データである、水素流量502、回転数503、トルク504、筒内圧505〜筒内圧507(筒内圧1〜N)を入力し、この入力によってニューラルネットワークより得られる出力値と、入力した状態データに対応する点火時期501との差を用い、この差が小さくなるようにニューラルネットワークを更新する、いわゆる学習の処理を行い、基本制御量として、ここでは点火時期を算出するニューラルネットワークのモデル(以下、算出学習モデル)を求める。なお、学習手法として、ここではDNNの利用を想定しているが、同様の効果が得られるならば他の手法を用いてもよい。
【0033】
次に、基本制御量算出部113は、ステップ40
6において得られた算出学習モデルを算出学習モデルデータベース109に記録する
(ステップ407)。その後、コントローラ103は、入力装置等を介して基本制御量算出の処理終了の指示を受けたか否かを判定し(ステップ416)、上記処理終了の指示を受けたと判定した場合(ステップ416;Yes)、処理を終了する(ステップ402)。一方、コントローラ103は、上記処理終了の指示を受けていないと判定した場合(ステップ416;No)、ステップ403に戻り、以降の処理を繰り返す。事前学習フェーズにおける基本制御量算出部113の学習に関する処理は、ここまでとなる。
【0034】
以上により、異常予兆検出部110と基本制御量算出部113のそれぞれについて、データベースを用いた学習が行われ、事前学習フェーズが完了する。
【0035】
続いて、運用フェーズについて述べる。運用フェーズでは、事前学習フェーズで得られた検出学習モデルと算出学習モデルを用いて、システム101の制御が行われる。
【0036】
図1に沿って基本的な処理の流れを述べる。まず、センサ部102では、エンジンの燃焼のサイクルに合わせて、一定時間毎に、状態データである水素流量、回転数、トルク、筒内圧が計測されているものとする。また、観測部104では、センサ部102が取得したセンサデータをもとに、システム101の状態に関するデータが得られているものとする。例えば、観測部104は、連続データを適当な離散データに変換するなど、特定のルールに沿った処理が行われているものとする。なお、観測部104は、上記センサデータ自体をそのまま状態データとみなして以降の処理で用いてもよい。観測部104は、状態データを、異常予兆検出部110と報酬算出部111と基本制御量算出部113とに出力する。
【0037】
運用フェーズにおいて、異常予兆検出部110は、まず、異常の予兆の検出の準備として事前学習フェーズで得た検出学習モデルを取得(ステップ209)。次に、異常予兆検出部110は、観測部104で求められた状態データを取得する(ステップ210)。
【0038】
次に、異常予兆検出部110は、取得した状態データについて、事前学習フェーズでの処理と同様に、短時間フーリエ変換を実行し(ステップ211)、正規化を実行する(ステップ212)。これにより、事前学習フェーズと同様にFFTデータが得られる。
【0039】
次に、異常予兆検出部110は、このFFTデータを検出学習モデルに入力し、異常の予兆を検出する(ステップ213)。検出学習モデルは、FFTデータについて、事前学習フェーズにて異常の予兆の有無を判定する処理を学習しており、異常の予兆の有無が結果として得られる。異常が検出された場合はそれを示す「1」を、また、異常が検出されなかった場合はそれを示す「0」を異常予兆検出結果としてメモリに格納する(ステップ214)。
【0040】
報酬算出部111は、メモリに格納された異常予兆検出結果をもとに、報酬を算出する(ステップ216)。ここで報酬とは、システム101に対して所定の制御を行うことで、システム101が到達した状態(ここではシステム101が計測されることで得られた状態)に対して、良否を判断するための情報である。ここでは、異常予兆検出部110が、異常の予兆があると判定した場合には負の報酬が割り当てられるものとする。なお、異常予兆検出部110が、異常の予兆がないと判定し、かつ、状態に関するデータから算出した熱効率の増加率が正の場合は、これに比例した正の報酬が割り当てられるものとする。その後、コントローラ103は、入力装置等を介して異常予兆検出の処理終了の指示を受けたか否かを判定し(ステップ215)、上記処理終了の指示を受けたと判定した場合(ステップ215;Yes)、処理を終了する(ステップ202)。一方、コントローラ103は、上記処理終了の指示を受けていないと判定した場合(ステップ215;No)、ステップ203に戻り、以降の処理を繰り返す。
【0041】
基本制御量算出部113は、まず、基本制御量算出の準備として、事前学習フェーズで得た算出学習モデルを取得する(ステップ411)。当該処理は、ステップ408において、基本制御量算出部113が、運用フェーズで追加学習を行うか否かを判定した後に実行される。
【0042】
次に、基本制御量算出部113は、運用フェーズで追加学習を行わないと判定した場合(ステップ408;No)、観測部104で求められた状態に関するデータを取得する(ステップ412)。次に、基本制御量算出部113は、取得した状態に関するデータについて、事前学習フェーズでの処理と同様に正規化を実行する(ステップ413)。これにより、正規化された状態に関するデータが得られる。次に、基本制御量算出部113は、この正規化された状態に関するデータを算出学習モデルに入力し、基本制御量を算出する(ステップ414)。これによって、基本制御量算出の結果(以下、基本制御量算出結果)が得られる。
【0043】
基本制御量算出結果は、例えば、基本制御量算出部113が、DNNによる基本制御量算出の学習に関する処理(ステップ40
6)で得られた
算出学習モデルに、状態データとして、水素流量、回転数、トルク、筒内圧1〜Nを入力し、当該
算出学習モデルの出力結果として得られた制御量(例えば、当該状態における運用時の点火時期)を出力する。基本制御量算出部113は、出力した制御量を基本制御量として、メモリに格納する(ステップ415)。
【0044】
なお、基本制御量算出部113は、運用フェーズで追加学習を行うと判定した場合(ステップ408;Yes)、ステップ412と同様に、観測部104で求められた状態に関するデータを取得する(ステップ409)。その後、基本制御量算出部113は、ステップ405〜407までの各処理と同様に、正規化、DNNによる機械学習、算出学習モデルの記録を行う(ステップ410)。ステップ409、410の処理を実行することにより、運用時においてもDNNによる機械学習を行って算出学習モデルを生成するので、後述する制御量の探索において、システム101が制御すべき制御量を、より精度よく探索することができる。
【0045】
制御量探索部112は、基本制御量算出部113により基本制御量算出結果がメモリに格納されると処理を開始し(ステップ601)、まず、探索空間の更新の有無を判定する(ステップ602)。ここで、探索空間とは、基本制御量を基準として、システム101の評価値がより大きくなるような制御量を探索するために設定される、離散的な空間である。以下に示すように、制御量探索部112は、基本制御量を基準として生成した探索空間内でシステム101を制御するための制御量を探索するので、膨大な候補の中から効率よくこれらの値を設定することができる。
【0046】
今、探索空間が生成されていないか、あるいは既存の探索空間の利用を止めて、探索空間をあらためて生成したいとする。この場合、制御量探索部112は、探索空間を更新すると判定し(ステップ602;Yes)、基本制御量を取得する(ステップ603)。これにより、ステップ414で出力された点火時期などの基本制御量が得られる。
【0047】
次に、制御量探索部112は、探索空間の設定として、例えばユーザインターフェイスや設定ファイルから、基本制御量を基準として制御量を探索する際の探索範囲の最大値や最小値、探索の刻み幅などのデータを取得する(ステップ604)。次に、制御量探索部112は、探索空間の設定に関するデータと基本制御量とを用い、ステップ603で取得した基本制御量を基準として、当該基本制御量近傍で探索空間を生成する(ステップ605)。探索空間の生成には、制御量の範囲と状態の範囲が必要となる。まず制御量の範囲については、例えば、点火時期の制御量について、上記基本制御量を中心として、あらかじめ定められた最小値から最大値まで、一定の刻み幅で評価値が記録される配列として生成される。また、状態の範囲については、例えば、算出事前学習用データベース10
8にて、状態データをなすデータ毎の範囲が得られるため、その最小値から最大値まで、一定の刻み幅で評価値が記録される配列として生成される。これらをもとに探索空間は生成される。なお、制御量探索部112は、探索空間の生成時点では、評価値をゼロでリセットするものとする。
【0048】
図7は、探索空間の例を示す図である。
図7では、例えば、状態0〜MまでのM個の状態と、制御量0〜NまでのN個の制御量とが記憶され、各状態と各制御量の組み合わせ毎の評価値(評価値00〜MN)が記憶されている。
次に、制御量探索部112は、観測部104により得られた今の状態に関するデータを取得する(ステップ606)。次に、制御量探索部112は、報酬を取得する(ステップ607)。報酬は、
図2に示したステップ216において、状態ごとの報酬が算出されているため、制御量探索部112は、メモリから上記今の状態に対応する報酬を読み出せばよい。
【0049】
次に、制御量探索部112は、上記、今の状態に関するデータが対応する探索空間内の箇所の評価値に、報酬を記録することで評価値を更新する(ステップ608)。例えば、制御量探索部112は、
図7に示した探索空間を参照し、上記今の状態に関するデータが「状態0」におけるものであり、当該状態のもとで設定していた制御量が「制御量1」である場合、これらに対応する「評価値01」を、ステップ607で得られた報酬により更新する。このように、ステップ608では、ある制御量のもとで異常の予兆があると判定された場合には負の報酬が評価値として加えられ、また、異常の予兆がなく、かつ、熱効率の増加率が正の場合はこれに比例した正の報酬が評価値として加えられる。
【0050】
次に、制御量探索部112は、上記今の状態に関するデータを用いた探索空間内の評価値の更新が完了したか否かを判定する(ステップ609)。制御量探索部112は、上記探索空間内の評価値の更新が完了していない、すなわち、探索空間において評価値がゼロの制御量が存在すると判定した場合(ステップ609;No)、当該評価値がゼロの評価値に対応する制御量ではシステム101の制御を試みていないと判断する。したがって、制御量探索部112は、
図7に示した探索空間を参照して当該制御量を探索し、これをシステム101の制御量として設定し、設定した当該制御量と当該制御量によるシステム101の制御を実行するための制御パラメータとを対応付けてメモリに格納する(ステップ610)。この制御量および制御パラメータを受け、制御部105は、システム101内のエンジンで処理可能な指令値に変換し、システム101を制御する。
【0051】
一方、制御量探索部112は、上記探索空間内の評価値の更新が完了した、すなわち、当該評価値がゼロの制御量が存在していないと判定した場合(ステップ609;Yes)、上記探索空間内の探索範囲の探索を終えたと判断する。したがって、制御量探索部112は、上記探索範囲で評価値が最大となる、すなわち報酬が最大となるときの制御量を、システム101の制御量として設定し、設定した当該制御量と当該制御量によるシステム101の制御を実行するための制御パラメータとを対応付けてメモリに格納する(ステップ611)。なお、ここでは、上記探索範囲内の制御量をすべて試すこととしているが、ランダムにいくつかの候補を試してその中で評価値が最大となる制御量の周辺をより詳細に探索するなど、制御量の探索方式として別の方法を用いてもよい。また、本例では、報酬が最大となるときの制御量を運用時におけるシステム101の制御量として設定することとしたが、必ずしも報酬が最大となる制御量でなくともよい。例えば、報酬の基準となる条件(例えば、閾値)を設けておき、制御量探索部112が、システム101の出力が当該基準を満たすか否かを判定し、当該基準を満たすと判定した場合、当該基準を満たすための制御量を、システム101が満たすべき制御量として設定しても良い。すなわち、制御量探索部112は、ある一定の閾値異常の報酬を満たす制御量と当該制御量による制御を実行するための制御パラメータとを対応付けてメモリに格納してもよい。
【0052】
以上の実施例においては、コントローラ103の各部における一連の処理について、実施形態に応じて取捨選択を行なっても良い。また、事前学習フェーズで用いる学習用データについては、システムの動作をシミュレートするシミュレータで生成し、これを用いることとしてもよい。加えて、このシミュレータは、コントローラに内蔵されていてもよいし、
図1のシステム101とは別の外部のシステムで動作し、通信によって、データが
図1のシステムに送られるようにしてもよい。
【0053】
このように、本実施例では、観測部104が、センサ部102が検知した制御対象(例えば、エンジン)の状態に基づいて、その状態に関する量を算出し、異常予兆検出部110が、上記状態に関する量を検出学習モデル107に入力することで上記制御対象の異常予兆を検出する。また、報酬算出部111が、異常予兆の検出結果に基づいて、上記制御対象の動作の良否を評価した量である報酬を算出し、基本制御量算出部113が、運用時における上記状態に関するデータを算出学習モデルに入力したときに得られた運用時の制御量に基づいて、上記制御対象を制御する基準となる基本制御量を算出する。そして、制御量探索部112が、基本制御量と、運用時における上記状態に関するデータと、報酬とに基づいて、報酬が所定の条件を満たす制御量を探索し、探索した制御量を出力し、制御部105が、探索した制御量に基づいて、上記制御対象への指令値を生成する。したがって、発電に必要な制御パラメータ毎の制御量を調整する手間を削減することができる。
【0054】
また、多様な燃料を用いた発電の実現を目的として、安価なセンサとAI(Artificial Intelligence)により、発電に必要な制御パラメータを自動で調整するエンジン向けAI化ユニットを提供することができる。なお、以上では、原動機としてエンジンを用い、発電の目的で利用する想定で説明しているが、発電でなく、輸送に必要なトルクを得る場合においても当然ながら利用可能である。