(57)【要約】      （修正有）【課題】発電に必要な制御パラメータを調整する手間を削減する。【解決手段】センサが検知した制御対象の状態に基き前記状態に関する量を算出する観測部と、前記状態に関する量を検出学習モデルに入力したときに得られる出力に基き前記制御対象の異常予兆を検出する異常予兆検出部と、検出結果に基き前記制御対象の動作の評価量である報酬を算出する報酬算出部と、運用時における前記状態のデータと、前記状態データを算出学習モデルに入力することで前記制御対象を制御する基準となる基本制御量を算出する基本制御量算出部と、前記基本制御量と、前記運用時における前記状態に関するデータと、前記報酬とに基き前記報酬が所定の条件を満たす制御量を探索し、探索した前記制御量と当該制御量による制御を実行するための前記制御量とを出力する制御量探索部と、探索した前記制御量と前記制御量とに基き前記制御対象への指令値を生成する制御部とを備える。【選択図】図１
2019138151.tif 000002
【特許請求の範囲】
【請求項１】
センサが検知した制御対象の状態に基づいて、前記状態に関する量を算出する観測部と、前記状態に関する量を検出学習モデルに入力したときに得られる出力に基づいて、前記制御対象の異常予兆を検出する異常予兆検出部と、前記異常予兆の検出結果に基づいて、前記制御対象の動作の良否を評価した量である報酬を算出する報酬算出部と、運用時における前記状態に関するデータと、前記運用時における前記状態データを算出学習モデルに入力することで前記制御対象を制御する基準となる基本制御量を算出する基本制御量算出部と、前記基本制御量と、前記運用時における前記状態に関するデータと、前記報酬とに基づいて、前記報酬が所定の条件を満たす制御量を探索し、探索した前記制御量と当該制御量による制御を実行するための前記制御量とを出力する制御量探索部と、探索した前記制御量と前記制御量とに基づいて、前記制御対象への指令値を生成する制御部と、
を備えることを特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記観測部は、前記センサが検知した前記制御対象であるエンジンの筒内圧の状態に関する量を算出し、
前記異常予兆検出部は、前記エンジンの筒内圧の状態に関する量と、前記制御量とに基づいて、前記エンジンの筒内圧の異常予兆を検出し、
前記基本制御量算出部は、運用時における前記エンジンの筒内圧の状態に関するデータと、前記運用時の制御量とに基づいて、前記基本制御量を算出する、
ことを特徴とする制御装置。
【請求項３】
請求項２に記載の制御装置であって、
前記異常予兆検出部は、前記エンジンの筒内圧の状態に関する量を、ニューラルネットワークにより構成される前記検出学習モデルに入力し、当該入力により得られた前記制御量を用いて前記制御対象の異常予兆を検出する、
ことを特徴とする制御装置。
【請求項４】
請求項２に記載の制御装置であって、
前記基本制御量算出部は、前記運用時の前記エンジンの状態に関するデータを、ニューラルネットワークにより構成される前記算出学習モデルに入力し、当該入力により得られた前記制御量を用いて前記基本制御量を算出する、
ことを特徴とする制御装置。
【請求項５】
請求項２に記載の制御装置であって、
前記制御量探索部は、前記基本制御量を基準として、前記運用時の前記状態に関するデータと前記運用時の前記状態における前記制御量とを対応付けた探索空間を生成し、生成した前記探索空間内で、前記報酬が所定の条件を満たす制御量を探索する、
ことを特徴とする制御装置。
【請求項６】
請求項１に記載の制御装置であって、
前記報酬算出部は、前記異常予兆の検出結果が異常を予兆するものである場合には、前記評価した量として負の報酬を算出し、前記異常予兆の検出結果が異常を予兆するものでない場合には、前記評価した量として正の報酬を算出する、
ことを特徴とする制御装置。
【請求項７】
請求項３に記載の制御装置であって、
前記異常予兆検出部は、前記エンジンの筒内圧の状態に関するデータをフーリエ変換して得られたパワースペクトルを、ニューラルネットワークにより構成される前記検出学習モデルに入力し、当該入力により得られた量を用いて前記制御対象の異常予兆を検出する、
ことを特徴とする制御装置。
【請求項８】
センサが検知した制御対象の状態に基づいて、前記状態に関する量を算出し、
前記状態に関する量を検出学習モデルに入力したときに得られた量に基づいて、前記制御対象の異常予兆を検出し、
前記異常予兆の検出結果に基づいて、前記制御対象の動作の良否を評価した量である報酬を算出し、
運用時における前記状態に関するデータを算出学習モデルに入力したときに得られた前記運用時の制御量に基づいて、前記制御対象を制御する基準となる基本制御量を算出し、
前記基本制御量と、前記運用時における前記状態に関するデータと、前記報酬とに基づいて、前記報酬が所定の条件を満たす制御量を探索し、探索した前記制御量と当該制御量による制御を実行するための制御パラメータとを出力し、
探索した前記制御量と前記制御パラメータとに基づいて、前記制御対象への指令値を生成する、
ことを特徴とする制御方法。
【請求項９】
コンピュータに、
センサが検知した制御対象の状態に基づいて、前記状態に関する量を算出する処理と、
前記状態に関する量を検出学習モデルに入力したときに得られた量に基づいて、前記制御対象の異常予兆を検出する処理と、
前記異常予兆の検出結果に基づいて、前記制御対象の動作の良否を評価した量である報酬を算出する処理と、
運用時における前記状態に関するデータを算出学習モデルに入力したときに得られた前記運用時の制御量に基づいて、前記制御対象を制御する基準となる基本制御量を算出する処理と、
前記基本制御量と、前記運用時における前記状態に関するデータと、前記報酬とに基づいて、前記報酬が所定の条件を満たす制御量を探索し、探索した前記制御量と当該制御量による制御を実行するための制御パラメータとを出力する処理と、
探索した前記制御量と前記制御パラメータとに基づいて、前記制御対象への指令値を生成する処理と、
を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御方法、および制御プログラムに関する。
【背景技術】
【０００２】
従来、ニューラルネットワークを用いて、エンジン等の制御対象を制御する様々な技術がある。例えば、特許文献１では、ニューラルネットワークを用いて、エンジン回転数、吸入空気圧等のエンジン制御パラメータを算出し、エンジンを制御する装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１６７９６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
昨今、発展途上国などで産出されるガスや余剰農産物によるバイオ燃料等、地域特有の燃料事情に対応する発電システムが、地域エネルギーの自立化手段として求められている。そのためには、地域毎に入手性が良い燃料に発電用エンジンを対応させる必要がある。しかし、点火時期・空燃比等の制御パラメータを人手で調整する作業は極めて困難かつ煩雑であり、高コストとなってしまう。このため、発電に必要な制御パラメータを調整する手間を削減するための技術が求められていた。本発明は、発電に必要な制御パラメータを調整する手間を削減することが可能な制御装置、制御方法、および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、センサが検知した制御対象の状態に基づいて、前記状態に関する量を算出する観測部と、前記状態に関する量を検出学習モデルに入力したときに得られる出力に基づいて、前記制御対象の異常予兆を検出する異常予兆検出部と、前記異常予兆の検出結果に基づいて、前記制御対象の動作の良否を評価した量である報酬を算出する報酬算出部と、運用時における前記状態に関するデータと、前記運用時における前記状態データを算出学習モデルに入力することで前記制御対象を制御する基準となる基本制御量を算出する基本制御量算出部と、前記基本制御量と、前記運用時における前記状態に関するデータと、前記報酬とに基づいて、前記報酬が所定の条件を満たす制御量を探索し、探索した前記制御量と当該制御量による制御を実行するための前記制御量とを出力する制御量探索部と、探索した前記制御量と前記制御量とに基づいて、前記制御対象への指令値を生成する制御部と、を備えることを特徴とする制御装置として構成される。
【０００６】
また、本発明は、上記制御装置で行われる制御方法、および制御プログラムとしても把握される。
【発明の効果】
【０００７】
本発明によれば、発電に必要な制御パラメータを調整する手間を削減することができる。
【図面の簡単な説明】
【０００８】
【図１】システム全体の構成図
【図２】異常予兆検出部が実行する処理の手順を示すフローチャート
【図３】検出事前学習用ＤＢ（Data Base）の例
【図４】基本制御量算出部が実行する処理の手順を示すフローチャート
【図５】算出事前学習用ＤＢの例
【図６】制御量探索部が実行する処理の手順を示すフローチャート
【図７】探索空間の例
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、本実施例における制御装置、制御方法、および制御プログラムの実施の形態を詳細に説明する。本実施例では、制御装置の制御対象としてエンジンを例に挙げて説明しているが、モータやタービンをはじめとする様々な原動機やポンプ、あるいはそれらが組み込まれた車両や船舶、ロボットなどの移動体についても同様に適用することができる。以下、エンジンを含むシステムと、このシステムの状態を計測するためのセンサと、センサから得られるデータをもとにシステムに指令値を与えるコントローラとからなる制御系において、熱効率が良くなるようにエンジンを制御することを考える。
【００１０】
図１に全体の構成を示す。システム１０１は、原動機とこれが作用する対象からなり、ここでは原動機としてエンジンが用いられているものとする。また、センサ部１０２は、エンジンを含むシステム１０１の状態を計測するためのセンサからなる。ここでは、一例として、水素流量、回転数、トルク、筒内圧を計測可能なセンサが備えられているものとする。また、コントローラ１０３は、センサ部１０２とシステム１０１に接続されており、センサ部１０２からセンサデータが入力され、システム１０１に指令値を出力できるものとする。
【００１１】
また、コントローラ１０３には、複数の機能が備えられているものとする。具体的には、コントローラ１０３は、複数センサデータの入力を得た上で、これにもとづきシステム１０１の状態に関する量を算出する観測部１０４と、観測部１０４より得られるシステム１０１の状態と異常予兆検出部１１０より検出されるシステム１０１やシステム１０１を構成するエンジンの異常の予兆の有無（以下、異常予兆検出結果）とにもとづいてシステム１０１の動作の良否を評価した量（以下、報酬）を算出する報酬算出部１１１と、異常予兆検出のための検出事前学習用データベース１０６をもとに異常の予兆の検出を学習し、この学習結果にもとづいて異常予兆検出結果を算出する異常予兆検出部１１０と、算出事前学習用データベース１０８をもとに制御量を探索する際の基準となる制御量（以下、基本制御量）を算出するための学習を行い、この学習結果にもとづいて基本制御量を算出する基本制御量算出部１１３と、基本制御量算出部１１３より得られた基本制御量をもとに、報酬が大きくなるようなシステムの制御量を探索し、当該制御量によりシステム１０１を制御するための制御量を出力する制御量探索部１１２と、制御量探索部１１２が出力した制御量に対応する原動機への指令値を出力する制御部１０５とを有している。
【００１２】
また、コントローラ１０３は、異常予兆検出部１１０の学習に用いる検出事前学習用データベース１０６と、異常予兆検出部１１１の学習結果を保持する異常予兆検出のための検出学習モデルデータベース１０７と、基本制御量算出部１１３の学習に用いる基本制御量算出のための算出事前学習用データベース１０８と、基本制御量算出部１１３の学習結果を保持する基本制御量算出のための算出学習モデルデータベース１０９とを記憶する。
【００１３】
また、ここでは図示していないが、コントローラ１０３は、ハードウェアとしては、ＰＣ（Personal Computer）等の一般的なコンピュータにより構成され、ＣＰＵ（Central Processing Unit）、メモリ、外部記憶装置、通信Ｉ／Ｆ（インタフェース）、出力装置、入力装置等の各部を備えている。コントローラ１０３を構成するこれらの各部は、内部バス等の内部通信線により電気的に接続されている。
【００１４】
ＣＰＵは、外部記憶装置に記憶されている各種プログラムを読み出してメモリにロードして実行することにより、コントローラ１０３の各種機能を実現する。メモリは、例えば、データの読書き可能なＲＡＭ（Random Access Memory）から構成され、ＣＰＵにより上記各種プログラムがロードされる。外部記憶装置は、例えば、ＲＯＭ（Read Only Memory）等の記憶媒体、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の記憶装置から構成され、コントローラ１０３の処理に必要な各種プログラムを記憶する。
【００１５】
なお、上記各種プログラムは、通信Ｉ／Ｆを介してネットワークから外部記憶装置にダウンロードされ、メモリ上にロードされて、ＣＰＵにより実行されるようにしてもよい。また、ＣＤ(Compact Disk)やＤＶＤ(Digital Versatile Disk)等の可搬性を有するコンピュータで読み取り可能な記憶媒体に対して情報を読み書きする読書装置を介して、当該記憶媒体からメモリ上に直接ロードされＣＰＵにより実行されるようにしてもよい。
【００１６】
さらには、上記各種プログラムが、コンピュータにインストール可能な形式又は実行可能な形式のファイルで上記記憶媒体に記録されて提供されてもよい。さらには、上記各種プログラムが、通信ネットワークに接続されたコンピュータ上に格納され、ネットワーク経由でダウンロードにより提供されてもよい。
【００１７】
また、ここでは、コントローラ１０３の各部については、ソフトウェアとしての実装を想定しているが、それらのすべてまたは一部をハードウェアとして実装してもよい。また、センサ部１０２を除く各部については、コントローラ１０３と通信可能な遠隔地に設けられていても良い。また、以上の各部をなすハードウェアやソフトウェアは、実施形態に応じて取捨選択しても良い。
【００１８】
また、筒内圧を計測可能なセンサとしては、ここでは燃焼圧力センサを想定するが、筒内圧と相関がある量を計測可能なセンサであれば他のセンサであってもよい。例えば、エンジンに設置したひずみセンサを用いてもよいし、筒内圧の変化が音や振動として計測可能ならマイクや振動センサを用いてもよい。あるいは熱の変化を計測可能なカメラを用いて、筒内圧の変化を計測できるのであればそれらのカメラを用いてもよい。
【００１９】
以上に示した制御系において、エンジンを制御するにあたり、処理の段階として、大きく事前学習フェーズと運用フェーズの２つのフェーズを想定する。
【００２０】
ここで、事前学習フェーズとは、異常予兆検出部１１０と基本制御量算出部１１３が、予め準備した学習データを用いた学習により、異常予兆の検出と制御量の算出ができるようにする段階をさす。また、運用フェーズとは、事前学習済みの異常予兆検出部１１０と基本制御量算出部１１３を用いて、エンジンの制御を行う段階をさす。
【００２１】
まず、事前学習フェーズについて述べる。事前学習フェーズでは、異常予兆検出部１１０と基本制御量算出部１１３のそれぞれについて、データベースを用いた学習が行われる。
【００２２】
このうち、まず、異常予兆検出部１１０の処理について述べる。まず、ここでの異常の予兆とは、制御対象とするシステムによって定義されるが、ここではエンジンの制御を想定しており、異常燃焼に伴うノッキングを異常と定義し、また、そのノッキングによって筒内圧波形が乱れる（通常の筒内圧波形に対して、ノイズがのってくる）ことを異常の予兆と定義する。この定義のもと、異常予兆検出部１１０の処理を図２に示す。コントローラ１０３は、入力装置等を介して異常予兆検出の処理開始の指示を受けると（ステップ２０１）、事前学習フェーズか運用フェーズかを判定するための選択処理を実行する（ステップ２０３）。コントローラ１０３は、事前学習フェーズであると判定した場合（ステップ２０３；Ｙｅｓ）、ステップ０２０４として、異常予兆検出部１１０は、検出事前学習用データベース１０６からデータを取得する。なお、コントローラ１０３が、事前学習フェーズでないと判定した場合（ステップ２０３；Ｎｏ）、ステップ２０９以降の処理を実行するが、これらの処理については後述する。
【００２３】
ここで、検出事前学習用データベース１０６のデータ例を図３に示す。図３の上段に示すように、検出事前学習用データベース１０６に格納されているデータは、異常予兆ラベル３０１と、エンジンの状態を表すデータ３０２〜３０７とが対応付けて記憶されている。これらの状態のデータは、システム１０１内のエンジンを、センサ部１０２で計測することで得られたデータである。これらの状態データには、エンジンの燃焼の１サイクル毎のデータとして、水素流量３０２、回転数３０３、トルク３０４、筒内圧３０５〜筒内圧３０７（筒内圧１〜Ｎ）といった、エンジンの燃焼の１サイクル分の燃焼圧力の時間変化に対応するデータが記録されている。加えて、このデータが得られた際のシステム１０１やシステム１０１を構成するエンジンの異常の予兆の有無を表す異常予兆ラベル３０１が記録されている。異常予兆ラベル３０１には、例えば、当該異常予兆ラベル３０１に対応付けて記憶されている状態データが異常の予兆に対応する場合には「１」、そうでない場合には「０」が設定される。異常予兆ラベル３０１の設定については後述する。
【００２４】
なお、状態データ３０２〜３０７では、エンジンの燃焼の１サイクル分のみ例示しているが、事前の試運転などで得られた複数サイクル分の状態データが、同様にデータベースに記録されているものとする。
【００２５】
次に、異常予兆検出部１１０は、事前学習フェーズにおいては、検出事前学習用データベース１０６を用いて異常予兆の検出処理の学習を行う。この際、状態データを周波数領域でのデータに変換して、その上で学習の処理を行うが、この周波数領域でのデータへの変換処理として、まず、短時間フーリエ変換を実行する（ステップ２０５）。より詳しくは、異常予兆検出部１１０は、状態データのうち、筒内圧データに対して時間窓を設定し、設定した時間窓のそれぞれについて、短時間フーリエ変換を実行する。これにより、異常予兆検出部１１０は、時間窓毎に、周波数帯域毎のパワースペクトルを得る。
【００２６】
異常予兆検出部１１０は、結果として、図３の下段に示すように、例えば、状態データである筒内圧１〜Ｎのそれぞれについて、短時間フーリエ変換によって得られるデータ３０８〜３１０（以下、ＦＦＴデータ１〜Ｎ）を、図３の上段に示した異常予兆ラベル３０１、水素流量３０２、回転数３０３、トルク３０４、筒内圧３０５〜筒内圧３０７（筒内圧１〜Ｎ）に対応付けて格納する。このように、異常予兆検出部１１０は、コントローラ１０３のメモリに、短時間フーリエ変換の結果に関するデータを記憶する。なお、周波数領域のデータへの変換手法として、ここでは短時間フーリエ変換の利用を想定しているが、同様の効果が得られるならば他の手法を用いてもよい。例えば、ウェーブレット変換を用いても良い。次に、ここまでに得られているデータについて、異常予兆検出部１１０は、ＦＦＴデータについて、正規化処理を実行する（ステップ２０６）。これにより、データ間の大きさなどが、特定のルールに沿って揃えられる。
【００２７】
次に、異常予兆検出部１１０は、ＤＮＮ（Deep Neural Network）による異常予兆検出の学習に関する処理を実行する（ステップ２０７）。今、異常予兆検出部１１０には、分類を行うためのニューラルネットワークが構成されているものとする。ここで、当該ニューラルネットワークに対し、状態データのうち、筒内圧３０５〜筒内圧３０７（筒内圧１〜Ｎ）より上記の処理で得られたＦＦＴデータを入力し、この入力によってニューラルネットワークより得られる出力値と、入力したＦＦＴデータに対応する異常予兆ラベル３０１との差を用い、この差が小さくなるようにニューラルネットワークを更新する、いわゆる学習の処理を行い、異常予兆の有無を検出するニューラルネットワークのモデル（以下、検出学習モデル）を求める。これら一連の学習に関する処理によって、異常予兆検出部１１０は得られた状態データのうち筒内圧のデータを用いて、異常予兆の有無を判定できるようになる。なお、学習手法として、ここではＤＮＮの利用を想定しているが、同様の効果が得られるならば他の手法を用いてもよい。
【００２８】
次に、異常予兆検出部１１０は、ステップ２０７において得られた検出学習モデルを検出学習モデルデータベース１０７に記録する（ステップ２０８）。その後、コントローラ１０３は、入力装置等を介して異常予兆検出の処理終了の指示を受けたか否かを判定し（ステップ２１５）、上記処理終了の指示を受けたと判定した場合（ステップ２１５；Ｙｅｓ）、処理を終了する（ステップ２０２）。一方、コントローラ１０３は、上記処理終了の指示を受けていないと判定した場合（ステップ２１５；Ｎｏ）、ステップ２０３に戻り、以降の処理を繰り返す。事前学習フェーズにおける異常予兆検出部１１０の学習に関する処理は、ここまでとなる。
【００２９】
次に、基本制御量算出部１１３の処理について述べる。基本制御量算出部１１３の処理を図４に示す。コントローラ１０３は、入力装置等を介して基本制御量算出の処理開始の指示を受けると（ステップ４０１）、事前学習フェーズか運用フェーズかの選択処理を実行する（ステップ４０３）。コントローラ１０３は、事前学習フェーズであると判定した場合（ステップ４０３；Ｙｅｓ）、ステップ４０４として、基本制御量算出部１１３は、算出事前学習用データベース１０８からデータを取得する。なお、コントローラ１０３が、事前学習フェーズでないと判定した場合（ステップ４０３；Ｎｏ）、ステップ４０８以降の処理を実行するが、これらの処理については後述する。
【００３０】
ここで、算出事前学習用データベース１０８のデータ例を図５に示す。図５に示すように、算出事前学習用データベース１０８に格納されているデータは、図３に示した状態データ３０２〜３０７と同様の状態データ５０２〜５０７と、当該状態データが得られた際に設定した制御パラメータ（例えば、点火時期）毎の制御量とが対応付けて記憶されている。ここでの状態データは、システム１０１内のエンジンをセンサ部１０２で計測することで得られた状態に関するデータである。これらの状態データには、図３に示した検出事前学習用データベース１０６と同様、エンジンの燃焼の１サイクル毎のデータとして、水素流量５０２、回転数５０２、トルク５０３、筒内圧５０５〜筒内圧５０７（筒内圧１〜Ｎ）といった、エンジンの燃焼の１サイクル分の燃焼圧力の時間変化に対応するデータが記録されている。加えて、これらのデータが得られた際に設定した制御量として、点火時期５０１が記録されている。なお、状態データ５０２〜５０７では、エンジンの燃焼の１サイクル分のデータのみが表現されているが、事前の試運転などで得られた複数サイクル分のデータが同様にデータベースに記録されているものとする。
【００３１】
次に、ここまでに得られているデータについて、基本制御量算出部１１３は、点火時期５０１以外の状態データについて正規化処理４０５を実行する(ステップ４０５)。これにより、データ間の大きさなどが、特定のルールに沿って揃えられる。
【００３２】
次に、基本制御量算出部１１３は、ＤＮＮによる基本制御量算出の学習に関する処理を実行する（ステップ４０６）。今、基本制御量算出部１１３には、回帰を行うためのニューラルネットワークが構成されているものとする。ここで、当該ニューラルネットワークに対し、状態データである、水素流量５０２、回転数５０３、トルク５０４、筒内圧５０５〜筒内圧５０７（筒内圧１〜Ｎ）を入力し、この入力によってニューラルネットワークより得られる出力値と、入力した状態データに対応する点火時期５０１との差を用い、この差が小さくなるようにニューラルネットワークを更新する、いわゆる学習の処理を行い、基本制御量として、ここでは点火時期を算出するニューラルネットワークのモデル（以下、算出学習モデル）を求める。なお、学習手法として、ここではＤＮＮの利用を想定しているが、同様の効果が得られるならば他の手法を用いてもよい。
【００３３】
次に、基本制御量算出部１１３は、ステップ４０７において得られた算出学習モデルを算出学習モデルデータベース１０９に記録する。その後、コントローラ１０３は、入力装置等を介して基本制御量算出の処理終了の指示を受けたか否かを判定し（ステップ４１６）、上記処理終了の指示を受けたと判定した場合（ステップ４１６；Ｙｅｓ）、処理を終了する（ステップ４０２）。一方、コントローラ１０３は、上記処理終了の指示を受けていないと判定した場合（ステップ４１６；Ｎｏ）、ステップ４０３に戻り、以降の処理を繰り返す。事前学習フェーズにおける基本制御量算出部１１３の学習に関する処理は、ここまでとなる。
【００３４】
以上により、異常予兆検出部１１０と基本制御量算出部１１３のそれぞれについて、データベースを用いた学習が行われ、事前学習フェーズが完了する。
【００３５】
続いて、運用フェーズについて述べる。運用フェーズでは、事前学習フェーズで得られた検出学習モデルと算出学習モデルを用いて、システム１０１の制御が行われる。
【００３６】
図１に沿って基本的な処理の流れを述べる。まず、センサ部１０２では、エンジンの燃焼のサイクルに合わせて、一定時間毎に、状態データである水素流量、回転数、トルク、筒内圧が計測されているものとする。また、観測部１０４では、センサ部１０２が取得したセンサデータをもとに、システム１０１の状態に関するデータが得られているものとする。例えば、観測部１０４は、連続データを適当な離散データに変換するなど、特定のルールに沿った処理が行われているものとする。なお、観測部１０４は、上記センサデータ自体をそのまま状態データとみなして以降の処理で用いてもよい。観測部１０４は、状態データを、異常予兆検出部１１０と報酬算出部１１１と基本制御量算出部１１３とに出力する。
【００３７】
運用フェーズにおいて、異常予兆検出部１１０は、まず、異常の予兆の検出の準備として事前学習フェーズで得た検出学習モデルを取得（ステップ２０９）。次に、異常予兆検出部１１０は、観測部１０４で求められた状態データを取得する（ステップ２１０）。
【００３８】
次に、異常予兆検出部１１０は、取得した状態データについて、事前学習フェーズでの処理と同様に、短時間フーリエ変換を実行し（ステップ２１１）、正規化を実行する（ステップ２１２）。これにより、事前学習フェーズと同様にＦＦＴデータが得られる。
【００３９】
次に、異常予兆検出部１１０は、このＦＦＴデータを検出学習モデルに入力し、異常の予兆を検出する（ステップ２１３）。検出学習モデルは、ＦＦＴデータについて、事前学習フェーズにて異常の予兆の有無を判定する処理を学習しており、異常の予兆の有無が結果として得られる。異常が検出された場合はそれを示す「１」を、また、異常が検出されなかった場合はそれを示す「０」を異常予兆検出結果としてメモリに格納する（ステップ２１４）。
【００４０】
報酬算出部１１１は、メモリに格納された異常予兆検出結果をもとに、報酬を算出する（ステップ２１６）。ここで報酬とは、システム１０１に対して所定の制御を行うことで、システム１０１が到達した状態（ここではシステム１０１が計測されることで得られた状態）に対して、良否を判断するための情報である。ここでは、異常予兆検出部１１０が、異常の予兆があると判定した場合には負の報酬が割り当てられるものとする。なお、異常予兆検出部１１０が、異常の予兆がないと判定し、かつ、状態に関するデータから算出した熱効率の増加率が正の場合は、これに比例した正の報酬が割り当てられるものとする。その後、コントローラ１０３は、入力装置等を介して異常予兆検出の処理終了の指示を受けたか否かを判定し（ステップ２１５）、上記処理終了の指示を受けたと判定した場合（ステップ２１５；Ｙｅｓ）、処理を終了する（ステップ２０２）。一方、コントローラ１０３は、上記処理終了の指示を受けていないと判定した場合（ステップ２１５；Ｎｏ）、ステップ２０３に戻り、以降の処理を繰り返す。
【００４１】
基本制御量算出部１１３は、まず、基本制御量算出の準備として、事前学習フェーズで得た算出学習モデルを取得する（ステップ４１１）。当該処理は、ステップ４０８において、基本制御量算出部１１３が、運用フェーズで追加学習を行うか否かを判定した後に実行される。
【００４２】
次に、基本制御量算出部１１３は、運用フェーズで追加学習を行わないと判定した場合（ステップ４０８；Ｎｏ）、観測部１０４で求められた状態に関するデータを取得する（ステップ４１２）。次に、基本制御量算出部１１３は、取得した状態に関するデータについて、事前学習フェーズでの処理と同様に正規化を実行する（ステップ４１３）。これにより、正規化された状態に関するデータが得られる。次に、基本制御量算出部１１３は、この正規化された状態に関するデータを算出学習モデルに入力し、基本制御量を算出する（ステップ４１４）。これによって、基本制御量算出の結果（以下、基本制御量算出結果）が得られる。
【００４３】
基本制御量算出結果は、例えば、基本制御量算出部１１３が、ＤＮＮによる基本制御量算出の学習に関する処理（ステップ４０７）で得られた算出事前学習モデルに、状態データとして、水素流量、回転数、トルク、筒内圧１〜Ｎを入力し、当該算出事前学習モデルの出力結果として得られた制御量（例えば、当該状態における運用時の点火時期）を出力する。基本制御量算出部１１３は、出力した制御量を基本制御量として、メモリに格納する（ステップ４１５）。
【００４４】
なお、基本制御量算出部１１３は、運用フェーズで追加学習を行うと判定した場合（ステップ４０８；Ｙｅｓ）、ステップ４１２と同様に、観測部１０４で求められた状態に関するデータを取得する（ステップ４０９）。その後、基本制御量算出部１１３は、ステップ４０５〜４０７までの各処理と同様に、正規化、ＤＮＮによる機械学習、算出学習モデルの記録を行う（ステップ４１０）。ステップ４０９、４１０の処理を実行することにより、運用時においてもＤＮＮによる機械学習を行って算出学習モデルを生成するので、後述する制御量の探索において、システム１０１が制御すべき制御量を、より精度よく探索することができる。
【００４５】
制御量探索部１１２は、基本制御量算出部１１３により基本制御量算出結果がメモリに格納されると処理を開始し（ステップ６０１）、まず、探索空間の更新の有無を判定する（ステップ６０２）。ここで、探索空間とは、基本制御量を基準として、システム１０１の評価値がより大きくなるような制御量を探索するために設定される、離散的な空間である。以下に示すように、制御量探索部１１２は、基本制御量を基準として生成した探索空間内でシステム１０１を制御するための制御量を探索するので、膨大な候補の中から効率よくこれらの値を設定することができる。
【００４６】
今、探索空間が生成されていないか、あるいは既存の探索空間の利用を止めて、探索空間をあらためて生成したいとする。この場合、制御量探索部１１２は、探索空間を更新すると判定し（ステップ６０２；Ｙｅｓ）、基本制御量を取得する（ステップ６０３）。これにより、ステップ４１４で出力された点火時期などの基本制御量が得られる。
【００４７】
次に、制御量探索部１１２は、探索空間の設定として、例えばユーザインターフェイスや設定ファイルから、基本制御量を基準として制御量を探索する際の探索範囲の最大値や最小値、探索の刻み幅などのデータを取得する（ステップ６０４）。次に、制御量探索部１１２は、探索空間の設定に関するデータと基本制御量とを用い、ステップ６０３で取得した基本制御量を基準として、当該基本制御量近傍で探索空間を生成する（ステップ６０５）。探索空間の生成には、制御量の範囲と状態の範囲が必要となる。まず制御量の範囲については、例えば、点火時期の制御量について、上記基本制御量を中心として、あらかじめ定められた最小値から最大値まで、一定の刻み幅で評価値が記録される配列として生成される。また、状態の範囲については、例えば、算出事前学習用データベース１０９にて、状態データをなすデータ毎の範囲が得られるため、その最小値から最大値まで、一定の刻み幅で評価値が記録される配列として生成される。これらをもとに探索空間は生成される。なお、制御量探索部１１２は、探索空間の生成時点では、評価値をゼロでリセットするものとする。
【００４８】
図７は、探索空間の例を示す図である。図７では、例えば、状態０〜ＭまでのＭ個の状態と、制御量０〜ＮまでのＮ個の制御量とが記憶され、各状態と各制御量の組み合わせ毎の評価値（評価値００〜ＭＮ）が記憶されている。
次に、制御量探索部１１２は、観測部１０４により得られた今の状態に関するデータを取得する（ステップ６０６）。次に、制御量探索部１１２は、報酬を取得する（ステップ６０７）。報酬は、図２に示したステップ２１６において、状態ごとの報酬が算出されているため、制御量探索部１１２は、メモリから上記今の状態に対応する報酬を読み出せばよい。
【００４９】
次に、制御量探索部１１２は、上記、今の状態に関するデータが対応する探索空間内の箇所の評価値に、報酬を記録することで評価値を更新する（ステップ６０８）。例えば、制御量探索部１１２は、図７に示した探索空間を参照し、上記今の状態に関するデータが「状態０」におけるものであり、当該状態のもとで設定していた制御量が「制御量１」である場合、これらに対応する「評価値０１」を、ステップ６０７で得られた報酬により更新する。このように、ステップ６０８では、ある制御量のもとで異常の予兆があると判定された場合には負の報酬が評価値として加えられ、また、異常の予兆がなく、かつ、熱効率の増加率が正の場合はこれに比例した正の報酬が評価値として加えられる。
【００５０】
次に、制御量探索部１１２は、上記今の状態に関するデータを用いた探索空間内の評価値の更新が完了したか否かを判定する（ステップ６０９）。制御量探索部１１２は、上記探索空間内の評価値の更新が完了していない、すなわち、探索空間において評価値がゼロの制御量が存在すると判定した場合（ステップ６０９；Ｎｏ）、当該評価値がゼロの評価値に対応する制御量ではシステム１０１の制御を試みていないと判断する。したがって、制御量探索部１１２は、図７に示した探索空間を参照して当該制御量を探索し、これをシステム１０１の制御量として設定し、設定した当該制御量と当該制御量によるシステム１０１の制御を実行するための制御パラメータとを対応付けてメモリに格納する（ステップ６１０）。この制御量および制御パラメータを受け、制御部１０５は、システム１０１内のエンジンで処理可能な指令値に変換し、システム１０１を制御する。
【００５１】
一方、制御量探索部１１２は、上記探索空間内の評価値の更新が完了した、すなわち、当該評価値がゼロの制御量が存在していないと判定した場合（ステップ６０９；Ｙｅｓ）、上記探索空間内の探索範囲の探索を終えたと判断する。したがって、制御量探索部１１２は、上記探索範囲で評価値が最大となる、すなわち報酬が最大となるときの制御量を、システム１０１の制御量として設定し、設定した当該制御量と当該制御量によるシステム１０１の制御を実行するための制御パラメータとを対応付けてメモリに格納する（ステップ６１１）。なお、ここでは、上記探索範囲内の制御量をすべて試すこととしているが、ランダムにいくつかの候補を試してその中で評価値が最大となる制御量の周辺をより詳細に探索するなど、制御量の探索方式として別の方法を用いてもよい。また、本例では、報酬が最大となるときの制御量を運用時におけるシステム１０１の制御量として設定することとしたが、必ずしも報酬が最大となる制御量でなくともよい。例えば、報酬の基準となる条件（例えば、閾値）を設けておき、制御量探索部１１２が、システム１０１の出力が当該基準を満たすか否かを判定し、当該基準を満たすと判定した場合、当該基準を満たすための制御量を、システム１０１が満たすべき制御量として設定しても良い。すなわち、制御量探索部１１２は、ある一定の閾値異常の報酬を満たす制御量と当該制御量による制御を実行するための制御パラメータとを対応付けてメモリに格納してもよい。
【００５２】
以上の実施例においては、コントローラ１０３の各部における一連の処理について、実施形態に応じて取捨選択を行なっても良い。また、事前学習フェーズで用いる学習用データについては、システムの動作をシミュレートするシミュレータで生成し、これを用いることとしてもよい。加えて、このシミュレータは、コントローラに内蔵されていてもよいし、図１のシステム１０１とは別の外部のシステムで動作し、通信によって、データが図１のシステムに送られるようにしてもよい。
【００５３】
このように、本実施例では、観測部１０４が、センサ部１０２が検知した制御対象（例えば、エンジン）の状態に基づいて、その状態に関する量を算出し、異常予兆検出部１１０が、上記状態に関する量を検出学習モデル１０７に入力することで上記制御対象の異常予兆を検出する。また、報酬算出部１１１が、異常予兆の検出結果に基づいて、上記制御対象の動作の良否を評価した量である報酬を算出し、基本制御量算出部１１３が、運用時における上記状態に関するデータを算出学習モデルに入力したときに得られた運用時の制御量に基づいて、上記制御対象を制御する基準となる基本制御量を算出する。そして、制御量探索部１１２が、基本制御量と、運用時における上記状態に関するデータと、報酬とに基づいて、報酬が所定の条件を満たす制御量を探索し、探索した制御量を出力し、制御部１０５が、探索した制御量に基づいて、上記制御対象への指令値を生成する。したがって、発電に必要な制御パラメータ毎の制御量を調整する手間を削減することができる。
【００５４】
また、多様な燃料を用いた発電の実現を目的として、安価なセンサとＡＩ（Artificial Intelligence）により、発電に必要な制御パラメータを自動で調整するエンジン向けＡＩ化ユニットを提供することができる。なお、以上では、原動機としてエンジンを用い、発電の目的で利用する想定で説明しているが、発電でなく、輸送に必要なトルクを得る場合においても当然ながら利用可能である。
【符号の説明】
【００５５】
１０１      システム
１０２      センサ部
１０３      コントローラ
１０４      観測部
１０５      制御部
１０６      検出事前学習用データベース
１０７      検出学習モデルデータベース
１０８      算出事前学習用データベース
１０９      算出学習モデルデータベース
１１０      異常予兆検出部
１１１      報酬算出部
１１２      制御量探索部
１１３      基本制御量算出部。
【図１】
2019138151.tif 000003
【図２】
2019138151.tif 000004
【図３】
2019138151.tif 000005
【図４】
2019138151.tif 000006
【図５】
2019138151.tif 000007
【図６】
2019138151.tif 000008
【図７】
2019138151.tif 000009