(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023066618
(43)【公開日】2023-05-16
(54)【発明の名称】制御装置、制御方法、および制御プログラム
(51)【国際特許分類】
F02D 45/00 20060101AFI20230509BHJP
G06N 3/08 20230101ALI20230509BHJP
【FI】
F02D45/00 372
G06N3/08
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021177302
(22)【出願日】2021-10-29
(71)【出願人】
【識別番号】391008559
【氏名又は名称】株式会社トランストロン
(71)【出願人】
【識別番号】501241645
【氏名又は名称】学校法人 工学院大学
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】小川 雅俊
(72)【発明者】
【氏名】出川 拓真
(72)【発明者】
【氏名】向井 正和
(72)【発明者】
【氏名】栗田 茂明
【テーマコード(参考)】
3G384
【Fターム(参考)】
3G384BA05
3G384BA08
3G384BA27
3G384DA06
3G384DA07
3G384EA07
3G384EB17
3G384EB18
3G384ED07
3G384FA01Z
3G384FA04Z
3G384FA08Z
3G384FA14Z
3G384FA15Z
3G384FA29Z
3G384FA37Z
3G384FA38Z
3G384FA48Z
3G384FA56Z
(57)【要約】
【課題】高性能かつ高速なエンジン制御を実現すること。
【解決手段】制御装置101は、エンジンEの運転条件と被制御量を制御するための操作量の候補値とから、エンジンモデルMを変換した変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出する。エンジンモデルMは、多層のニューロン構造かつReLU構造の活性化関数を有し、エンジンEの動特性を予測するモデルである。変換後のエンジンモデルMcは、エンジンモデルMに基づき、各ニューロンの重み係数、バイアス、および、入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、各ニューロンの活性化関数が変換されたモデルである。制御装置101は、運転条件から特定される被制御量の目標値と被制御量の推定値との誤差、および、操作量の変化量に基づいて、操作量の値を決定し、決定した操作量の値を出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
制御対象のエンジンの運転条件と被制御量の実値とを取得し、
多層のニューロン構造かつReLU構造の活性化関数を有し、前記エンジンの運転条件と操作量とを入力として前記エンジンの動特性を予測するエンジンモデルに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、前記各ニューロンの活性化関数が変換された変換後のエンジンモデルを用いて、取得した前記運転条件と、前記被制御量を制御するための操作量の候補値とから、将来の前記被制御量の推定値を算出し、
前記運転条件から特定される前記被制御量の目標値と、算出した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定し、
決定した前記操作量の値を出力する、
制御部を有することを特徴とする制御装置。
【請求項2】
前記制御部は、
前記被制御量の目標値と前記被制御量の推定値との誤差、および、前記操作量の現在値と前記操作量の候補値との差分に基づいて、前記操作量の値を決定する、ことを特徴とする請求項1に記載の制御装置。
【請求項3】
前記被制御量は、インテークマニホールド圧力、吸入空気量、インテークマニホールド酸素濃度のうちの少なくともいずれかである、ことを特徴とする請求項1に記載の制御装置。
【請求項4】
前記運転条件は、エンジン回転数および燃料噴射量である、ことを特徴とする請求項3に記載の制御装置。
【請求項5】
前記操作量は、ターボ開度、スロットル開度、EGR開度のうちの少なくともいずれかである、ことを特徴とする請求項4に記載の制御装置。
【請求項6】
前記変換後のエンジンモデルは、前記運転条件と前記操作量の値との組合せに対応する前記被制御量の実値を示す教師データに基づき更新される、ことを特徴とする請求項1に記載の制御装置。
【請求項7】
制御対象のエンジンの運転条件と被制御量の実値とを取得し、
多層のニューロン構造かつReLU構造の活性化関数を有し、前記エンジンの運転条件と操作量とを入力として前記エンジンの動特性を予測するエンジンモデルに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、前記各ニューロンの活性化関数が変換された変換後のエンジンモデルを用いて、取得した前記運転条件と、前記被制御量を制御するための操作量の候補値とから、将来の前記被制御量の推定値を算出し、
前記運転条件から特定される前記被制御量の目標値と、算出した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定し、
決定した前記操作量の値を出力する、
処理をコンピュータが実行することを特徴とする制御方法。
【請求項8】
制御対象のエンジンの運転条件と被制御量の実値とを取得し、
多層のニューロン構造かつReLU構造の活性化関数を有し、前記エンジンの運転条件と操作量とを入力として前記エンジンの動特性を予測するエンジンモデルに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、前記各ニューロンの活性化関数が変換された変換後のエンジンモデルを用いて、取得した前記運転条件と、前記被制御量を制御するための操作量の候補値とから、将来の前記被制御量の推定値を算出し、
前記運転条件から特定される前記被制御量の目標値と、算出した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定し、
決定した前記操作量の値を出力する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、制御方法、および制御プログラムに関する。
【背景技術】
【0002】
従来、自動車エンジンの制御において、AI(Artificial Intelligence)の深層学習を用いてエンジンモデルを再現することによって、高性能な制御を実現する取り組みが行われている。自動車エンジンの制御は、例えば、多層のニューラルネットワーク(NN)のモデル(エンジンの多入力多出力モデル)を用いて、多変数の最適制御を行うことによって実現される。
【0003】
先行技術としては、例えば、産業プロセスのモデル化のため、相互接続された二つのMLD(Mixed Logical Dynamical)サブシステムをマージすることによって、一つの結合されたMLDシステムを構築するものがある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、多層のニューラルネットワークのモデルを用いた多変数の最適制御に多くの演算時間がかかり、エンジンを実時間制御することが困難である。
【0006】
一つの側面では、本発明は、高性能かつ高速なエンジン制御を実現することを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様では、制御対象のエンジンの運転条件と被制御量の実値とを取得し、多層のニューロン構造かつReLU構造の活性化関数を有し、前記エンジンの運転条件と操作量とを入力として前記エンジンの動特性を予測するエンジンモデルに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、前記各ニューロンの活性化関数が変換された変換後のエンジンモデルを用いて、取得した前記運転条件と、前記被制御量を制御するための操作量の候補値とから、将来の前記被制御量の推定値を算出し、前記運転条件から特定される前記被制御量の目標値と、算出した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定し、決定した前記操作量の値を出力する、制御装置が提供される。
【発明の効果】
【0008】
本発明の一側面によれば、高性能かつ高速なエンジン制御を実現することができるという効果を奏する。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態1にかかる制御方法の一実施例を示す説明図である。
【
図2A】
図2Aは、エンジンモデルの一例を示す説明図である。
【
図2B】
図2Bは、エンジンモデルの変換例を示す説明図である。
【
図3】
図3は、制御装置101のハードウェア構成例を示すブロック図である。
【
図4】
図4は、実施の形態1にかかる制御装置101の機能的構成例を示すブロック図である。
【
図5】
図5は、被制御量の時間変化を示す説明図である。
【
図6】
図6は、実施の形態1にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
【
図7】
図7は、実施の形態2にかかる制御装置101の機能的構成例を示すブロック図である。
【
図8】
図8は、実施の形態2にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
【
図9】
図9は、モデル更新処理の具体的処理手順の一例を示すフローチャートである。
【
図10】
図10は、実施の形態3にかかる制御装置101の機能的構成例を示すブロック図である。
【
図11】
図11は、誤差学習テーブル1100の記憶内容の一例を示す説明図である。
【
図12】
図12は、実施の形態3にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
【
図13】
図13は、誤差学習処理の具体的処理手順の一例を示すフローチャートである。
【
図14】
図14は、実施の形態4にかかる制御装置101の機能的構成例を示すブロック図である。
【
図15】
図15は、実施の形態4にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
【
図16】
図16は、第2のモデル更新処理の具体的処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に図面を参照して、本発明にかかる制御装置、制御方法、および制御プログラムの実施の形態を詳細に説明する。
【0011】
(実施の形態1)
図1は、実施の形態1にかかる制御方法の一実施例を示す説明図である。
図1において、制御装置101は、エンジンEを制御するコンピュータである。エンジンEは、例えば、自動車のガソリンエンジン、ディーゼルエンジンなどである。エンジンEの制御とは、例えば、インテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度などを制御することである。
【0012】
ここで、多層のニューラルネットワーク(NN)のエンジンモデルを用いて、自動車エンジンの制御を行う場合がある。一方、自動車エンジンの複雑な現象を精度よく再現するには、考慮する変数の数が増え、エンジンモデルの規模が大きくなる。このため、従来技術では、エンジンモデルを用いて多変数の最適制御を行う場合に多くの演算時間を必要とする。
【0013】
また、既存のエンジンモデルは、非線形かつ1次遅れ、2次遅れ、無駄時間などの特性を含む動的システムであり、数式処理で逆関数の数理モデルを導出することが困難である。このため、解析的に問題を解くことができずに、計算負荷が高くなるという問題がある。したがって、従来技術では、エンジン制御ユニットへエンジンモデルを実装して、オンボードで実時間制御することが困難である。
【0014】
そこで、実施の形態1では、ReLU構造の活性化関数を有するエンジンモデルMを、バイナリ変数を含む線形不等式関数を用いて変換したエンジンモデルMcにより、運転条件と操作量から被制御量を推定し、被制御量の目標値となる操作量を探索することで、高性能かつ高速なエンジン制御を実現する制御方法について説明する。以下、制御装置101の処理例について説明する。
【0015】
制御装置101は、エンジンモデルMを変換した変換後のエンジンモデルMcを取得する。エンジンモデルMは、制御対象のエンジンEの動特性を予測するモデルである。エンジンモデルMは、多層のニューロン構造かつReLU(Rectified Linear Unit:正規化線形関数)構造の活性化関数を有する。
【0016】
ReLU構造は、関数への入力値が0以下の場合には出力値が0、入力値が0より大きい場合には出力値が線形に変化する関数である。エンジンモデルMは、エンジンEの運転条件と操作量とを入力として、将来の被制御量の値(予測値)を出力する。エンジンEの運転条件は、例えば、エンジン回転数および燃料噴射量である。
【0017】
エンジンEの被制御量は、例えば、インテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度などである。エンジンEの操作量は、例えば、被制御量を制御するためのアクチュエータの操作量であり、ターボ開度、スロットル開度、EGR(Exhaust Gas Recirculation)開度などである。
【0018】
エンジンモデルMによれば、高精度にエンジンEの動特性を再現することができる。一方で、エンジン制御に、エンジンモデルMをそのまま用いると、最適制御のための演算時間が増大するおそれがある。このため、制御装置101は、高性能かつ高速なエンジン制御を実現するために、エンジンモデルMを変換した変換後のエンジンモデルMcを取得する。
【0019】
変換後のエンジンモデルMcは、エンジンモデルMに基づき、各ニューロン(ノード)の重み係数、バイアス、および、入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、各ニューロンの活性化関数が変換されたモデルである。重み係数およびバイアスは、各ニューロン(ノード)の入力と出力との関係を表す。重み係数は、入力に対する重みを示す。バイアスは、入力値を一定の範囲に偏らせるために用いるものである。
【0020】
入出力変数は、例えば、モデル自体に入力される変数、モデル自体から出力される変数、モデル内の各ニューロンから出力される変数などである。入出力変数の上下限値は、例えば、エンジンモデルMに、網羅的な試験パターンであるChirp信号またはAPRBS(Amplitude Pseudo Random Binary Signal)信号を与えることによって取得される、各入出力変数の最大値と最小値に基づき設定される。
【0021】
ここで、
図2Aおよび
図2Bを用いて、エンジンモデルの変換例について説明する。エンジンモデルは、例えば、予め作成されている。
【0022】
図2Aは、エンジンモデルの一例を示す説明図である。
図2Aにおいて、エンジンモデル200は、エンジンモデルMの一例であり、多層のニューロン構造かつReLU構造の活性化関数を有する。エンジンモデル200は、エンジンEの複数の運転条件と操作量とを入力として、将来の被制御量を出力する。
【0023】
ここで、運転条件は、エンジン回転数(現在値、過去値)および燃料噴射量(現在値、過去値)である。また、操作量は、ターボ開度(現在値、過去値)、スロットル開度(現在値、過去値)およびEGR開度(現在値、過去値)である。過去値は、例えば、1ステップ前の値である。また、被制御量は、例えば、インテークマニホールド圧力(MAP)(1ステップ後の予測値)である。
【0024】
エンジンモデル200において、例えば、ノード201,202は、ReLU関数を含むニューロンの一例である。ReLU関数は、ReLU構造の活性化関数である。また、ω11
(1)は、u1からノード201への入力にかかる重みを示す。また、b1
(1)は、ノード201のバイアスを示す。
【0025】
図2Bは、エンジンモデルの変換例を示す説明図である。
図2Bにおいて、エンジンモデル210は、
図2Aに示したエンジンモデル200を簡易化して示したものである。なお、
図2Bでは、エンジンモデル210の一部を抜粋して表示している。
【0026】
エンジンモデル210において、例えば、ReLU関数211は、ノード201(
図2A参照)の活性化関数を示す。w
1は、uからノード201への入力にかかる重みを示す。b
1は、ノード201のバイアスを示す。また、ReLU関数212は、ノード202(
図2A参照)の活性化関数を示す。w
2は、ノード201からノード202への入力にかかる重みを示す。b
2は、ノード202のバイアスを示す。なお、Iは、線形関数を示す。
【0027】
制御装置101は、例えば、命題論理を用いて、各ReLU関数を変形する。ReLU関数は、例えば、下記式(1)を用いて表される。
【0028】
【0029】
制御装置101は、場合分けの条件を表現するために、下記式(2)、(3)のように、ReLU関数にバイナリ変数δを導入する。バイナリ変数δは、0と1の2値のみをとり得る変数(0-1変数)である。
【0030】
[f(x)≦0] ⇔ [δ=1] ・・・(2)
[f(x)>0] ⇔ [δ=0] ・・・(3)
【0031】
上記の命題論理は、下記式(4)、(5)の不等式が成立することと等価である。ただし、Mは、f(x)の最大値である。mは、f(x)の最小値である。εは、計算機精度である。制御装置101は、M(各ニューロンから出力される変数の上限値)として、変換前のエンジンモデル210の各ニューロンから出力される変数の最大値を設定する。また、制御装置101は、m(各ニューロンから出力される変数の下限値)として、変換前のエンジンモデル210の各ニューロンから出力される変数の最小値を設定する。
【0032】
f(x)≦M(1-δ) ・・・(4)
f(x)≧ε+(m-ε)δ ・・・(5)
【0033】
バイナリ変数δを用いることで、yは、下記式(6)のように表すことができる。
【0034】
y=(1-δ)f(x) ・・・(6)
【0035】
上記式(6)と等価な不等式は、例えば、下記式(7)~(10)となる。
【0036】
y≦M(1-δ) ・・・(7)
y≧m(1-δ) ・・・(8)
y≦f(x)-mδ ・・・(9)
y≧f(x)-Mδ ・・・(10)
【0037】
制御装置101は、例えば、上記変形をすべてのReLU関数に適用することにより、エンジンモデル210を変換する。
【0038】
エンジンモデル220は、変換後のエンジンモデルMcの一例であり、エンジンモデル210を変換した変換後のエンジンモデルである。エンジンモデル220は、エンジンEの複数の運転条件と操作量とを入力として、将来の被制御量を出力する。
図2Bでは、エンジンモデル220の一部を抜粋して表示している。
【0039】
制御装置101は、変換後のエンジンモデル220の各ニューロンの重み係数、バイアスとして、変換前のエンジンモデル210の各ニューロン(例えば、ノード201)の重み係数、バイアス(例えば、w1、b1)を設定する。また、制御装置101は、変換後のエンジンモデル220に入力される変数の上下限値として、変換前のエンジンモデル210に入力される変数(例えば、u)の上下限値を設定する。また、制御装置101は、変換後のエンジンモデル220から出力される変数の上下限値として、変換前のエンジンモデル210から出力される変数(例えば、y)の上下限値を設定する。
【0040】
これにより、制御装置101は、エンジンモデル210を変換した変換後のエンジンモデル220を取得することができる。エンジンモデル220によれば、問題(混合整数計画問題)を高速に解くことが可能なアルゴリズムを用いることができるため、計算負荷を抑えることができる。また、問題空間を限定することができるため、解空間が小さくなり探索にかかる時間を短縮することができる。
【0041】
ただし、エンジンモデル210の変換は、制御装置101とは異なる他のコンピュータにおいて行われてもよい。この場合、制御装置101は、例えば、ユーザの操作入力により、または、他のコンピュータから受信することにより、変換後のエンジンモデル220を取得する。
【0042】
制御装置101は、エンジンEの運転条件と被制御量の実値とを取得する。エンジンEの運転条件は、例えば、エンジン回転数および燃料噴射量である。被制御量は、例えば、インテークマニホールド圧力(MAP)である。被制御量の実値は、例えば、エンジンEに設けられ、被制御量を計測するセンサから取得される。
【0043】
制御装置101は、エンジンEの運転条件に基づいて、被制御量の目標値を特定する。具体的には、例えば、制御装置101は、2次元マップ(不図示)を参照して、エンジンEの運転条件に応じた被制御量の目標値を特定する。2次元マップは、エンジン運転条件(例えば、エンジン回転数と燃料噴射量との組合せ)に対応付けて、被制御量の目標値を示す情報である。被制御量の目標値は、例えば、排ガスや燃費を抑えるために適切な被制御量の値である。
【0044】
制御装置101は、エンジンEの運転条件と被制御量を制御するための操作量の候補値とから、変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出する。将来の被制御量の推定値は、例えば、エンジンEを制御する際の次のステップ(1秒後など)の被制御量を表す。操作量の候補値は、例えば、ランダムな値である。
【0045】
制御装置101は、特定した被制御量の目標値と、算出した被制御量の推定値との誤差に基づいて、被制御量を制御するための操作量の値を決定する。具体的には、例えば、制御装置101は、最適化ソルバーsvにより、操作量の候補値を変化させながら、変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出する。
【0046】
最適化ソルバーsvは、例えば、dual-simplex(双対単体法)アルゴリズムを用いて、問題を解くソフトウェアである。そして、制御装置101は、例えば、被制御量の目標値と被制御量の推定値との誤差が最小となるときの候補値を、次のステップで被制御量を制御するための操作量の値に決定してもよい。
【0047】
また、被制御量を目標値とするために操作量を急激に変化させると、例えば、アクチュエータが故障する可能性がある。このため、制御装置101は、被制御量の目標値と被制御量の推定値との誤差、および、操作量の変化量に基づいて、被制御量を制御するための操作量の値を決定することにしてもよい。
【0048】
ここで、操作量の変化量は、例えば、現在の操作量の値(現在値)と操作量の候補値との差分によって表される。より詳細に説明すると、例えば、制御装置101は、評価関数efを用いて、被制御量の目標値と被制御量の推定値との誤差および操作量の変化量から、制御評価値を算出する。
【0049】
評価関数efは、例えば、被制御量の目標値と被制御量の推定値との誤差を考慮する項と、操作量の変化量を考慮する項とに重み付けしたコスト関数である。重み付けは、例えば、被制御量の目標値と被制御量の推定値との誤差と操作量の変化量とを比較するために正規化しつつ、各項の優先度合いに応じて重み付けすることによって行われる。
【0050】
制御評価値は、例えば、被制御量を制御するためのコストに相当し、値が低いほど評価が高いことを示す。そして、制御装置101は、制御評価値(コスト)が最小となるときの操作量の候補値を、次のステップで被制御量を制御するための操作量の値に決定する。これにより、操作量の急峻な変化が生じないように、被制御量をできるだけ目標値に近づけるための操作量の値を決定することができる。ただし、評価関数efは、例えば、被制御量の目標値と被制御量の推定値との誤差を考慮する項のみを含むコスト関数であってもよい。
【0051】
制御装置101は、決定した操作量の値を出力する。具体的には、例えば、制御装置101は、次のステップで被制御量を制御する際の操作量として、エンジンEに対して、決定した操作量の値を出力する。
【0052】
このように、制御装置101によれば、高精度にエンジンEの動特性を予測可能なモデル(変換後のエンジンモデルMc)を用いて、高性能かつ高速なエンジン制御を実現することができる。例えば、多層のニューラルネットワークのエンジンモデルを、線形不等式関数を用いて定式化することで、最適化問題を解析的に解くことができる。また、線形不等式関数に変形可能な活性化関数としては、例えば、ReLU、Hadlims、Satlins、tribasなどがある。これらの活性化関数のうち、ReLU構造の活性化関数をエンジンモデルに用いることで、エンジンEの動特性(被制御量)の高精度な予測を実現することができる。
【0053】
(制御装置101のハードウェア構成例)
図3は、制御装置101のハードウェア構成例を示すブロック図である。
図3において、制御装置101は、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
【0054】
ここで、CPU301は、制御装置101の全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
【0055】
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【0056】
通信I/F305は、通信回線を通じてネットワーク310に接続され、ネットワーク310を介して外部のコンピュータ(例えば、後述の
図4に示す実エンジンシステムES)に接続される。そして、通信I/F305は、ネットワーク310と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
【0057】
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
【0058】
なお、制御装置101は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有することにしてもよい。また、制御装置101は、上述した構成部のうち、例えば、ディスクドライブ303、ディスク304、可搬型記録媒体I/F306、可搬型記録媒体307を有さないことにしてもよい。
【0059】
(制御装置101の機能的構成例)
図4は、実施の形態1にかかる制御装置101の機能的構成例を示すブロック図である。
図4において、制御装置101は、条件検出部401と、目標値算出部402と、推定部403と、最適化部404と、評価値算出部405と、を含む。条件検出部401~評価値算出部405は制御部となる機能であり、具体的には、例えば、
図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
【0060】
条件検出部401は、制御対象のエンジンEの運転条件と被制御量の実値とを取得する。ここで、エンジンEの運転条件は、例えば、エンジン回転数および燃料噴射量である。被制御量は、例えば、インテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度のうちの少なくともいずれかである。
【0061】
具体的には、例えば、条件検出部401は、実エンジンシステムESから、エンジンEの運転条件(現在値)と被制御量の実値(現在値)とを取得する。実エンジンシステムESは、エンジンEを制御するためのシステムであり、例えば、コントローラ、センサ、アクチュエータなどを含む。センサは、例えば、被制御量の実値を計測する。
【0062】
目標値算出部402は、取得されたエンジンEの運転条件に基づいて、エンジンEの被制御量の制御目標値を特定する。具体的には、例えば、目標値算出部402は、2次元マップ(不図示)を参照して、エンジンEの運転条件に応じた被制御量の制御目標値を特定する。2次元マップは、例えば、エンジン回転数と燃料噴射量との組合せに対応付けて、被制御量の制御目標値を示す。被制御量の制御目標値は、例えば、排ガスや燃費を抑えるために適切な被制御量の値である。
【0063】
推定部403は、取得されたエンジンEの運転条件と操作量の探索値とから、変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出する。ここで、操作量は、例えば、被制御量を制御するためのアクチュエータの操作量である。操作量は、例えば、ターボ開度、スロットル開度、EGR開度のうちの少なくともいずれかである。
【0064】
操作量の探索値は、被制御量を制御するための操作量の候補値である。操作量の探索値は、例えば、最適化部404により予め定められた探索ルールに従って探索され、最適化部404から推定部403に与えられる。将来の被制御量の推定値は、例えば、エンジンEを制御する際の次のステップの被制御量を表す。
【0065】
変換後のエンジンモデルMcは、エンジンモデルMを変換することにより得られる(例えば、
図2A、
図2B参照)。エンジンモデルMは、多層のニューロン構造かつReLU構造の活性化関数を有し、エンジンEの運転条件と操作量とを入力としてエンジンEの動特性を予測するモデルである。
【0066】
エンジンモデルMは、例えば、エンジンEの複数の運転条件と操作量とを入力として、将来の被制御量の推定値を出力するモデルである。複数の運転条件と操作量は、例えば、過去(例えば、4ステップ前)から現時刻までの各ステップにおける運転条件と操作量である。
【0067】
変換後のエンジンモデルMcは、エンジンモデルMに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、各ニューロンの活性化関数が変換されたモデルである。エンジンモデルMは、例えば、予め作成されてメモリ302、ディスク304などの記憶装置に記憶されている。
【0068】
具体的には、例えば、推定部403は、エンジンモデルMに基づいて、変換後のエンジンモデルMcの各ニューロンの重み係数、バイアスとして、変換前のエンジンモデルMの各ニューロンの重み係数、バイアスを設定する。また、推定部403は、変換後のエンジンモデルMcに入力される変数の上下限値として、エンジンモデルMに入力される変数の上下限値を設定する。
【0069】
また、推定部403は、変換後のエンジンモデルMcから出力される変数の上下限値として、エンジンモデルMから出力される変数の上下限値を設定する。また、推定部403は、変換後のエンジンモデルMcの各ニューロン(活性化関数)から出力される変数の上下限値として、エンジンモデルMの各ニューロンから出力される変数の上下限値を設定する。
【0070】
入出力変数の上下限値は、例えば、エンジンモデルMにChirp信号またはAPRBS信号を入力として与えることによって取得される、各入出力変数の最大値と最小値に基づき設定される。Chirp信号は、時刻に応じて周波数成分を連続的に変える正弦波の信号である。APRBS信号は、矩形波の振幅をランダムに組合せた信号である。Chirp信号やAPRBS信号によれば、網羅的な試験パターンを実現して、入出力変数の上下限値を精度よく設定することができる。また、各入出力変数の範囲を適切に限定することで、高速かつ高性能なモデル(エンジンモデルMc)を生成することができる。
【0071】
ただし、エンジンモデルMの変換は、制御装置101において行われてもよく、また、制御装置101とは異なる他のコンピュータにおいて行われてもよい。他のコンピュータにより行われた場合、制御装置101は、例えば、ユーザの操作入力により、または、他のコンピュータから受信することにより、変換後のエンジンモデルMcを取得する。
【0072】
具体的には、例えば、推定部403は、エンジンEの運転条件と操作量の探索値とを、変換後のエンジンモデルMcに入力することによって、将来の被制御量の推定値を算出する。より詳細に説明すると、例えば、推定部403は、kステップ前(kは、2以上の自然数)から1ステップ前までの運転条件(過去値)と操作量(過去値)と、運転条件(現在値)と操作量の探索値とを、変換後のエンジンモデルMcに入力することによって、1ステップ後の被制御量の推定値を算出する。過去の各ステップの運転条件(過去値)と操作量(過去値)は、例えば、メモリ302、ディスク304などの記憶装置に記憶されている。
【0073】
この際、推定部403は、現時刻から将来にわたる期間(例えば、4秒の間)の被制御量の推定値を算出することにしてもよい。例えば、1ステップを「1秒」とし、現時刻から将来にわたる期間を「4秒間」とする。この場合、推定部403は、4ステップ後までの各ステップの被制御量の推定値を算出する。
【0074】
ここで、各ステップの被制御量の推定値を算出するにあたり、各ステップにおける運転条件は、例えば、運転条件(現在値)に固定される。また、各ステップにおける操作量の探索値の組合せパターンは、最適化部404により予め定められた探索ルールに従って探索され、最適化部404から推定部403に与えられる。
【0075】
最適化部404は、被制御量の制御目標値と、算出された被制御量の推定値との誤差に基づいて、被制御量を制御するための操作量の値を決定する。具体的には、例えば、最適化部404は、被制御量の制御目標値と被制御量の推定値との誤差が最小となるときの探索値を、次のステップで被制御量を制御するための操作量の値に決定してもよい。
【0076】
また、最適化部404は、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の変化量に基づいて、被制御量を制御するための操作量の値を決定することにしてもよい。ここで、操作量の変化量は、例えば、現在の操作量の値(現在値)と操作量の探索値との差分によって表される。
【0077】
具体的には、例えば、評価値算出部405は、操作量の探索値それぞれについて、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の変化量に基づいて、制御評価値を算出する。制御評価値は、被制御量を制御するためのコストを表す指標値である。制御評価値は、例えば、値が低いほど評価が高いことを示す。
【0078】
より詳細に説明すると、例えば、評価値算出部405は、操作量の探索値それぞれについて、評価関数efを用いて、制御評価値を算出する。評価関数efは、例えば、被制御量の制御目標値と被制御量の推定値との誤差を考慮する項と、操作量の変化量を考慮する項とに重み付けしたコスト関数である(例えば、
図1参照)。
【0079】
そして、最適化部404は、例えば、算出された制御評価値に基づいて、操作量の探索値の中から、被制御量を制御するための操作量の値を決定する。より詳細に説明すると、例えば、最適化部404は、操作量の探索値のうち、制御評価値が最小となる探索値を、被制御量を制御するための操作量の値に決定する。
【0080】
なお、最適化部404による操作量の探索は、例えば、最小となる制御評価値の変化量がほぼなくなるまで行われてもよく、また、指定の反復回数分行われてもよい。
【0081】
また、現時刻から将来にわたる期間の被制御量の推定値が算出される場合がある。例えば、1ステップを「1秒」とし、現時刻から将来にわたる期間を「4秒間」とする。この場合、最適化部404は、各ステップにおける操作量の探索値の組合せパターンごとに、4ステップ後までの各ステップについて、評価関数efを用いて、制御評価値を算出する。
【0082】
そして、最適化部404は、組合せパターンごとに、算出した各ステップの制御評価値の合計値(または、平均値)を算出する。つぎに、最適化部404は、組合せパターンのうち、算出した制御評価値の合計値(または、平均値)が最小となる組合せパターンを特定する。そして、最適化部404は、特定した組合せパターンにおける1ステップ目(次のステップ)の操作量の探索値を、被制御量を制御するための操作量の値に決定することにしてもよい。
【0083】
これにより、操作量の急峻な変化を抑えつつ、被制御量をできるだけ制御目標値に近づけるための操作量を決定する際の精度の向上を図ることができる。
【0084】
また、最適化部404は、決定した操作量の値を出力する。具体的には、例えば、最適化部404は、実エンジンシステムESに対して、次のステップで被制御量を制御する際の操作量として、決定した操作量の値を出力する。実エンジンシステムESは、制御装置101(最適化部404)から出力される操作量の値に基づいて、エンジンEを制御する。
【0085】
具体的には、例えば、実エンジンシステムESにおいて、コントローラの制御に従って、アクチュエータにより、次のステップの操作量(例えば、ターボ開度)が、出力された操作量の値に調整される。この結果、エンジンEの被制御量(例えば、インテークマニホールド圧力)が制御される。
【0086】
また、エンジンモデルMに含まれるReLU構造の活性化関数は、例えば、Leaky ReLU構造であってもよい。Leaky ReLU構造は、関数への入力値が0以下の場合および0より大きい場合のいずれの場合も出力値が線形に変化し、0を境に傾きが異なる関数である。エンジンモデルMに含まれる活性化関数をLeaky ReLU構造の活性化関数とすることで、エンジンEの動特性を予測する精度を向上させることができる。
【0087】
なお、制御装置101は、例えば、自動車(制御対象)の自律走行制御ユニットによって実現することにしてもよい。自律走行制御ユニットは、例えば、ECU(Engine Control Unit)である。また、制御装置101は、自動車(制御対象)の自律走行制御ユニットと通信可能な他のコンピュータによって実現されてもよい。他のコンピュータは、例えば、サーバであってもよく、スマートフォン、PC(Personal Computer)などであってもよい。また、制御装置101は、例えば、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によって実現することにしてもよい。
【0088】
(モデル化誤差やセンサ劣化によるドリフトを考慮した被制御量の推定例)
ここで、変換後のエンジンモデルMcのモデル化誤差やセンサ劣化によるドリフト(計測値のズレ)により、エンジンEの動特性の予測精度が低下するおそれがある。
【0089】
図5は、被制御量の時間変化を示す説明図である。
図5において、グラフ501は、被制御量の実値の時間変化を示す。グラフ502は、被制御量の推定値の時間変化を示す。d(t)は、時間tにおけるグラフ501,502間の誤差を示している。d(t)は、例えば、モデル化誤差やセンサ劣化の影響により生じる誤差を表している。
【0090】
そこで、推定部403は、現時刻の被制御量の実値(現在値)と現時刻についての被制御量の推定値との誤差を考慮して、将来の被制御量の推定値を算出することにしてもよい。現時刻についての被制御量の推定値は、現時刻よりも前に推定された現時刻についての被制御量の推定値である。
【0091】
具体的には、例えば、推定部403は、下記式(11)を用いて、将来の被制御量の推定値を算出することにしてもよい。ただし、yp(t+j)は、被制御量の推定値を示す。y(t)は、現時刻の被制御量の実値を示す。yM(t+j)は、jステップ先の被制御量の推定値を示す。yM(t)は、現時刻よりも前に推定された現時刻についての被制御量の推定値を示す。
【0092】
yp(t+j)=y(t)+yM(t+j)-yM(t)・・・(11)
【0093】
これにより、モデル化誤差やセンサ劣化の影響を考慮することができ、エンジンEの動特性の予測精度の低下を防ぐことができる。
【0094】
(制御装置101の制御処理手順)
つぎに、制御装置101の制御処理手順について説明する。
【0095】
図6は、実施の形態1にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
図6のフローチャートにおいて、まず、制御装置101は、制御対象のエンジンEの運転条件と被制御量の実値とを取得する(ステップS601)。そして、制御装置101は、取得したエンジンEの運転条件に基づいて、エンジンEの被制御量の制御目標値を特定する(ステップS602)。
【0096】
つぎに、制御装置101は、被制御量を制御するための操作量の探索値を取得する(ステップS603)。そして、制御装置101は、取得したエンジンEの運転条件と操作量の探索値とから、変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出する(ステップS604)。
【0097】
つぎに、制御装置101は、評価関数efを用いて、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の変化量から制御評価値を算出する(ステップS605)。操作量の変化量は、例えば、操作量の現在値と操作量の探索値との差分によって表される。
【0098】
そして、制御装置101は、算出した制御評価値が制御評価値minより小さいか否かを判断する(ステップS606)。制御評価値minは、初期状態では「null」である。なお、ステップS606において、制御評価値minが初期状態の場合、制御装置101は、ステップS607に移行する。
【0099】
ここで、制御評価値が制御評価値min以上の場合(ステップS606:No)、制御装置101は、ステップS609に移行する。一方、制御評価値が制御評価値minより小さい場合(ステップS606:Yes)、制御装置101は、取得した操作量の探索値を、仮の最適値として保存する(ステップS607)。
【0100】
そして、制御装置101は、算出した制御評価値を制御評価値minとする(ステップS608)。つぎに、制御装置101は、操作量の探索を終了するか否かを判断する(ステップS609)。操作量の探索は、例えば、制御評価値minの変化量がほぼなくなるまで、または、指定の反復回数分行われる。
【0101】
ここで、操作量の探索を終了しない場合(ステップS609:No)、制御装置101は、ステップS603に戻る。一方、操作量の探索を終了する場合には(ステップS609:Yes)、制御装置101は、保存した仮の最適値である操作量の値を、実エンジンシステムESに出力して(ステップS610)、本フローチャートによる一連の処理を終了する。
【0102】
これにより、高精度かつ高速なエンジンモデル(変換後のエンジンモデルMc)を用いて、エンジンEの被制御量(例えば、インテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度など)を制御することができる。
【0103】
以上説明したように、実施の形態1にかかる制御装置101によれば、制御対象のエンジンEの運転条件と被制御量の実値とを取得し、エンジンEの運転条件と操作量の探索値とから、エンジンモデルMを変換した変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出することができる。エンジンモデルMは、多層のニューロン構造かつReLU構造の活性化関数を有し、エンジンEの運転条件と操作量とを入力としてエンジンEの動特性を予測するモデルである。変換後のエンジンモデルMcは、エンジンモデルMに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、各ニューロンの活性化関数が変換されたモデルである。そして、制御装置101によれば、被制御量の制御目標値と被制御量の推定値との誤差に基づいて、被制御量を制御するための操作量の値を決定し、決定した操作量の値を出力することができる。
【0104】
これにより、制御装置101は、高精度にエンジンEの動特性を予測可能なエンジンモデル(変換後のエンジンモデルMc)を用いて、高性能かつ高速なエンジン制御を実現することができる。例えば、自動車のインテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度などを適切に制御することにより、排ガスや燃費を抑えたエンジンEの実時間制御を行うことができる。
【0105】
また、制御装置101によれば、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の現在値と操作量の探索値との差分に基づいて、被制御量を制御するための操作量の値を決定することができる。具体的には、例えば、制御装置101は、操作量の探索値それぞれについて、評価関数efを用いて、被制御量を制御するためのコストを表す制御評価値を算出する。そして、制御装置101は、算出した制御評価値に基づいて、操作量の探索値の中から、被制御量を制御するための操作量の値を決定する。
【0106】
これにより、制御装置101は、操作量の急峻な変化を抑えつつ、被制御量をできるだけ制御目標値に近づけるための操作量を決定することができる。
【0107】
また、制御装置101によれば、インテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度のうちの少なくともいずれかを被制御量とすることができる。
【0108】
これにより、制御装置101は、インテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度などを調整してエンジンEを制御することができる。
【0109】
また、制御装置101によれば、エンジンEの運転条件をエンジン回転数および燃料噴射量とすることができる。
【0110】
これにより、制御装置101は、エンジンEのエンジン回転数および燃料噴射量から被制御量の制御目標値を求めることができる。
【0111】
また、制御装置101によれば、ターボ開度、スロットル開度、EGR開度のうちの少なくともいずれかを操作量とすることができる。
【0112】
これにより、制御装置101は、ターボ開度、スロットル開度、EGR開度などを調節して、インテークマニホールド圧力(MAP)、吸入空気量(MAF)、インテークマニホールド酸素濃度などを制御することができる。ターボ開度は、例えば、インテークマニホールド圧力(MAP)を制御するための操作量となる。スロットル開度は、例えば、吸入空気量(MAF)を制御するための操作量となる。EGR開度は、例えば、インテークマニホールド酸素濃度を制御するための操作量となる。
【0113】
また、制御装置101によれば、エンジンモデルMに含まれる活性化関数は、Leaky ReLU構造の活性化関数とすることができる。
【0114】
これにより、制御装置101は、エンジンEの動特性を予測する精度を向上させることができる。
【0115】
(実施の形態2)
つぎに、実施の形態2にかかる制御装置101について説明する。実施の形態2では、エンジンEの経年変化や環境変化により、エンジンEの動特性の予測精度が低下する場合があることを考慮して、変換後のエンジンモデルMcを更新する場合について説明する。なお、実施の形態1で説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【0116】
(制御装置101の機能的構成例)
まず、制御装置101の機能的構成例について説明する。
【0117】
図7は、実施の形態2にかかる制御装置101の機能的構成例を示すブロック図である。
図7において、制御装置101は、条件検出部401と、目標値算出部402と、推定部403と、最適化部404と、評価値算出部405と、更新部701と、を含む。条件検出部401~評価値算出部405および更新部701は制御部となる機能であり、具体的には、例えば、
図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
【0118】
以下、実施の形態1にかかる制御装置101とは異なる機能部について説明する。
【0119】
更新部701は、エンジンEの運転条件と操作量の値との組合せに対応する被制御量の実値を示す教師データに基づいて、変換後のエンジンモデルMcを更新する。ここで、エンジンEの運転条件と操作量の値との組合せは、例えば、時刻tの運転条件(現在値)と操作量の出力値との組合せである。
【0120】
操作量の出力値は、時刻tに制御装置101から実エンジンシステムESに出力された操作量の値(例えば、コスト最小の探索値)である。被制御量の実値は、例えば、操作量の出力値に応じて制御された1ステップ後の被制御量の実値である。ただし、被制御量の実値として、例えば、現時刻(時刻t)の被制御量の実値を用いることにしてもよい。
【0121】
教師データは、例えば、制御装置101によるエンジンE(実エンジンシステムES)の制御が行われるたびに、その都度作成されて、メモリ302、ディスク304などの記憶装置に記憶される。
【0122】
具体的には、例えば、更新部701は、条件検出部401によって取得された被制御量の実値(現在値)と、推定部403によって算出された被制御量の推定値との誤差を算出する。なお、被制御量の実値(現在値)と比較する推定値は、前回算出された被制御量の推定値(コスト最小のときの推定値)であってもよい。あるいは、被制御量の推定値と比較する被制御量の実値は、今回出力された操作量の値に応じて制御された1ステップ後の被制御量の実値であってもよい。
【0123】
そして、更新部701は、算出した誤差が閾値以上であるか否かを判断する。閾値は、任意に設定可能である。ここで、誤差が閾値未満の場合、更新部701は、変換後のエンジンモデルMcの更新を行わない。一方、誤差が閾値以上の場合、更新部701は、教師データに基づいて、変換後のエンジンモデルMcを更新する。
【0124】
より詳細に説明すると、例えば、更新部701は、誤差が閾値以上の場合、教師データに基づく機械学習を行うことにより、被制御量の推定値と実値との誤差が小さくなるように、変換後のエンジンモデルMcの各ニューロンの重み係数とバイアスを更新する。また、更新部701は、学習中の各層の各ニューロンの入出力の最大値を取得し、既存の最大値を超える場合には、そのニューロンの入出力の最大値を更新する。同様に、更新部701は、学習中の各層の各ニューロンの入出力の最小値を取得し、既存の最小値を下回る場合には、そのニューロンの入出力の最小値を更新する。
【0125】
変換後のエンジンモデルMcが更新された場合、推定部403は、更新された変換後のエンジンモデルMcを用いて、取得されたエンジンEの運転条件と操作量の探索値とから、将来の被制御量の推定値を算出する。
【0126】
(制御装置101の制御処理手順)
つぎに、制御装置101の制御処理手順について説明する。
【0127】
図8は、実施の形態2にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
図8のフローチャートにおいて、まず、制御装置101は、制御対象のエンジンEの運転条件と被制御量の実値とを取得する(ステップS801)。そして、制御装置101は、取得したエンジンEの運転条件に基づいて、エンジンEの被制御量の制御目標値を特定する(ステップS802)。
【0128】
つぎに、制御装置101は、モデル更新処理を実行する(ステップS803)。モデル更新処理は、変換後のエンジンモデルMcを更新するための処理である。モデル更新処理の具体的な処理手順については、
図9を用いて後述する。
【0129】
つぎに、制御装置101は、被制御量を制御するための操作量の探索値を取得する(ステップS804)。そして、制御装置101は、取得したエンジンEの運転条件と操作量の探索値とから、変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出する(ステップS805)。
【0130】
つぎに、制御装置101は、評価関数efを用いて、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の変化量から制御評価値を算出する(ステップS806)。操作量の変化量は、例えば、操作量の現在値と操作量の探索値との差分によって表される。
【0131】
そして、制御装置101は、算出した制御評価値が制御評価値minより小さいか否かを判断する(ステップS807)。制御評価値minは、初期状態では「null」である。なお、ステップS807において、制御評価値minが初期状態の場合、制御装置101は、ステップS808に移行する。
【0132】
ここで、制御評価値が制御評価値min以上の場合(ステップS807:No)、制御装置101は、ステップS810に移行する。一方、制御評価値が制御評価値minより小さい場合(ステップS807:Yes)、制御装置101は、取得した操作量の探索値を、仮の最適値として保存する(ステップS808)。
【0133】
そして、制御装置101は、算出した制御評価値を制御評価値minとする(ステップS809)。つぎに、制御装置101は、操作量の探索を終了するか否かを判断する(ステップS810)。操作量の探索は、例えば、制御評価値minの変化量がほぼなくなるまで、または、指定の反復回数分行われる。
【0134】
ここで、操作量の探索を終了しない場合(ステップS810:No)、制御装置101は、ステップS804に戻る。一方、操作量の探索を終了する場合には(ステップS810:Yes)、制御装置101は、保存した仮の最適値である操作量の値を、実エンジンシステムESに出力して(ステップS811)、本フローチャートによる一連の処理を終了する。
【0135】
これにより、高精度かつ高速なエンジンモデル(変換後のエンジンモデルMc)を用いて、エンジンEの被制御量を制御することができる。また、変換後のエンジンモデルMcを逐次更新することができる。
【0136】
つぎに、
図9を用いて、ステップS803のモデル更新処理の具体的な処理手順について説明する。
【0137】
図9は、モデル更新処理の具体的処理手順の一例を示すフローチャートである。
図9のフローチャートにおいて、まず、制御装置101は、変換後のエンジンモデルMcを用いて算出された被制御量の推定値を取得する(ステップS901)。この推定値は、例えば、前回の制御時に算出された被制御量の推定値(コスト最小のときの推定値)であってもよい。また、制御装置101は、例えば、被制御量を制御するための操作量の探索値を取得し、取得したエンジンEの運転条件と操作量の探索値とから、変換後のエンジンモデルMcを用いて算出することによって、被制御量の推定値を取得してもよい。
【0138】
つぎに、制御装置101は、取得した被制御量の推定値と、ステップS801において取得した被制御量の実値(現在値)との誤差を算出する(ステップS902)。そして、制御装置101は、算出した誤差が閾値以上であるか否かを判断する(ステップS903)。
【0139】
ここで、誤差が閾値未満の場合(ステップS903:No)、制御装置101は、モデル更新処理を呼び出したステップに戻る。一方、誤差が閾値以上の場合(ステップS903:Yes)、制御装置101は、教師データに基づいて、被制御量の推定値と実値との誤差が小さくなるように、変換後のエンジンモデルMcを更新して(ステップS904)、モデル更新処理を呼び出したステップに戻る。
【0140】
これにより、被制御量の推定値と実値(現在値)との誤差に応じて、変換後のエンジンモデルMcを逐次更新することができる。
【0141】
以上説明したように、実施の形態2にかかる制御装置101によれば、変換後のエンジンモデルMcを逐次更新することにより、エンジンEの経年変化や環境変化により予測精度が低下するのを防ぐことができる。
【0142】
(実施の形態3)
つぎに、実施の形態3にかかる制御装置101について説明する。実施の形態3では、エンジンEの経年変化や環境変化により、エンジンEの動特性の予測精度が低下する場合があることを考慮して、被制御量の予測値を補正する場合について説明する。なお、実施の形態1,2で説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【0143】
(制御装置101の機能的構成例)
まず、制御装置101の機能的構成例について説明する。
【0144】
図10は、実施の形態3にかかる制御装置101の機能的構成例を示すブロック図である。
図10において、制御装置101は、条件検出部401と、目標値算出部402と、推定部403と、最適化部404と、評価値算出部405と、誤差学習部1001と、を含む。条件検出部401~評価値算出部405および誤差学習部1001は制御部となる機能であり、具体的には、例えば、
図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
【0145】
以下、実施の形態1,2にかかる制御装置101とは異なる機能部について説明する。
【0146】
推定部403は、エンジンEの運転条件に対応する被制御量の補正値を示す補正情報を参照して、算出した被制御量の推定値を補正する。具体的には、例えば、推定部403は、
図11に示すような誤差学習テーブル1100を参照して、被制御量の推定値を補正する。
【0147】
誤差学習テーブル1100は、例えば、予め作成されていてもよく、また、制御装置101によるエンジンEの制御中に逐次作成、更新されるものであってもよい。誤差学習テーブル1100は、例えば、メモリ302、ディスク304などの記憶装置により実現される。ここで、誤差学習テーブル1100の記憶内容について説明する。
【0148】
図11は、誤差学習テーブル1100の記憶内容の一例を示す説明図である。
図11において、誤差学習テーブル1100は、運転条件(エンジン回転数、燃料噴射量)および補正値のフィールドを有し、各フィールドに情報を設定することで、補正情報(例えば、補正情報1100-1)をレコードとして記憶する。
【0149】
ここで、運転条件(エンジン回転数、燃料噴射量)は、エンジンEの運転条件であるエンジン回転数と燃料噴射量との組合せである。補正値は、エンジンEの被制御量の推定値を補正するための値である。誤差学習テーブル1100は、エンジン回転数と燃料噴射量との組合せごとに、当該組合せに対応する補正値を記憶する。
【0150】
例えば、取得されたエンジンEの運転条件(現在値)を、「エンジン回転数A1、燃料噴射量B1」とする。この場合、推定部403は、誤差学習テーブル1100を参照して、エンジン回転数A1と燃料噴射量B1との組合せに対応する補正値C1を特定する。そして、誤差学習部1001は、算出した被制御量の推定値に、特定した補正値C1を加算することにより、被制御量の推定値を補正する。
【0151】
この場合、最適化部404は、補正された補正後の被制御量の推定値との誤差を用いて、被制御量を制御するための操作量の値を決定する。具体的には、例えば、最適化部404は、被制御量の制御目標値と補正後の被制御量の推定値との誤差、および、操作量の変化量に基づいて、被制御量を制御するための操作量の値を決定する。
【0152】
なお、エンジンEの運転条件(現在値)に対応する補正値が誤差学習テーブル1100に存在しない場合がある。この場合、推定部403は、エンジンEの運転条件(現在値)に最も類似する運転条件に対応する補正値を特定することにしてもよい。または、推定部403は、もっとも類似する運転条件から、補間処理を用いて、運転条件に対応する補正値を求めてもよい。運転条件(現在値)に最も類似する運転条件とは、例えば、運転条件(現在値)との間のエンジン回転数の誤差と燃料噴射量の誤差との合計が最小の運転条件である。また、推定部403は、エンジンEの運転条件(現在値)に対応する補正値が存在しない場合、被制御量の推定値を補正しないことにしてもよい。
【0153】
誤差学習部1001は、エンジンEの運転条件に対応する被制御量の補正値を学習する。具体的には、例えば、誤差学習部1001は、条件検出部401によって取得された被制御量の実値(現在値)と、推定部403によって算出された被制御量の推定値との誤差を算出する。また、誤差学習部1001は、条件検出部401によって取得された被制御量の実値(現在値)と、推定部403によって補正された補正後の被制御量の推定値との誤差を算出することにしてもよい。
【0154】
なお、被制御量の実値(現在値)と比較する推定値(または、補正後の推定値)は、前回算出された被制御量の推定値(コスト最小のときの推定値)であってもよい。あるいは、被制御量の推定値と比較する被制御量の実値は、今回出力された操作量の値に応じて制御された1ステップ後の被制御量の実値であってもよい。
【0155】
そして、誤差学習部1001は、算出した誤差が閾値以上であるか否かを判断する。閾値は、任意に設定可能である。ここで、誤差が閾値以上の場合、誤差学習部1001は、例えば、算出した誤差に基づいて、被制御量の推定値と実値との誤差が小さくなるように、誤差学習テーブル1100を更新する。一方、誤差が閾値未満の場合、誤差学習部1001は、誤差学習テーブル1100の更新を行わない。
【0156】
より詳細に説明すると、例えば、誤差学習部1001は、誤差が閾値以上の場合、被制御量の実値(現在値)と被制御量の推定値(または、補正後の推定値)との誤差を、エンジンEの運転条件(現在値)と対応付けて、誤差学習テーブル1100に記憶する。この際、エンジンEの運転条件(現在値)と同じ運転条件に対応する過去の誤差が存在する場合、誤差学習部1001は、例えば、過去の誤差の平均値(最大値、最小値などでもよい)を、エンジンEの運転条件(現在値)と対応付けて、誤差学習テーブル1100に記憶することにしてもよい。
【0157】
(制御装置101の制御処理手順)
つぎに、制御装置101の制御処理手順について説明する。
【0158】
図12は、実施の形態3にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
図12のフローチャートにおいて、まず、制御装置101は、制御対象のエンジンEの運転条件と被制御量の実値とを取得する(ステップS1201)。そして、制御装置101は、取得したエンジンEの運転条件に基づいて、エンジンEの被制御量の制御目標値を特定する(ステップS1202)。
【0159】
つぎに、制御装置101は、誤差学習処理を実行する(ステップS1203)。誤差学習処理は、誤差学習テーブル1100を更新するための処理である。誤差学習処理の具体的な処理手順については、
図13を用いて後述する。
【0160】
つぎに、制御装置101は、被制御量を制御するための操作量の探索値を取得する(ステップS1204)。そして、制御装置101は、取得したエンジンEの運転条件と操作量の探索値とから、変換後のエンジンモデルMcを用いて、将来の被制御量の推定値を算出する(ステップS1205)。
【0161】
つぎに、制御装置101は、誤差学習テーブル1100を参照して、算出した被制御量の推定値を補正する(ステップS1206)。具体的には、例えば、制御装置101は、誤差学習テーブル1100を参照して、ステップS1201において取得したエンジンEの運転条件に対応する補正値を特定する。そして、制御装置101は、算出した被制御量の推定値に、特定した補正値を加算することにより、被制御量の推定値を補正する。
【0162】
つぎに、制御装置101は、評価関数efを用いて、被制御量の制御目標値と補正後の被制御量の推定値との誤差、および、操作量の変化量から制御評価値を算出する(ステップS1207)。操作量の変化量は、例えば、操作量の現在値と操作量の探索値との差分によって表される。
【0163】
そして、制御装置101は、算出した制御評価値が制御評価値minより小さいか否かを判断する(ステップS1208)。制御評価値minは、初期状態では「null」である。なお、ステップS1208において、制御評価値minが初期状態の場合、制御装置101は、ステップS1209に移行する。
【0164】
ここで、制御評価値が制御評価値min以上の場合(ステップS1208:No)、制御装置101は、ステップS1211に移行する。一方、制御評価値が制御評価値minより小さい場合(ステップS1208:Yes)、制御装置101は、取得した操作量の探索値を、仮の最適値として保存する(ステップS1209)。
【0165】
そして、制御装置101は、算出した制御評価値を制御評価値minとする(ステップS1210)。つぎに、制御装置101は、操作量の探索を終了するか否かを判断する(ステップS1211)。操作量の探索は、例えば、制御評価値minの変化量がほぼなくなるまで、または、指定の反復回数分行われる。
【0166】
ここで、操作量の探索を終了しない場合(ステップS1211:No)、制御装置101は、ステップS1204に戻る。一方、操作量の探索を終了する場合には(ステップS1211:Yes)、制御装置101は、保存した仮の最適値である操作量の値を、実エンジンシステムESに出力して(ステップS1212)、本フローチャートによる一連の処理を終了する。
【0167】
これにより、高精度かつ高速なエンジンモデル(変換後のエンジンモデルMc)と誤差学習テーブル1100を用いて、エンジンEの被制御量を制御することができる。また、誤差学習テーブル1100を逐次更新することができる。
【0168】
つぎに、
図13を用いて、ステップS1203の誤差学習処理の具体的な処理手順について説明する。
【0169】
図13は、誤差学習処理の具体的処理手順の一例を示すフローチャートである。
図13のフローチャートにおいて、まず、制御装置101は、変換後のエンジンモデルMcを用いて算出された被制御量の推定値を取得する(ステップS1301)。この推定値は、例えば、前回の制御時に算出された被制御量の推定値(コスト最小のときの推定値)であってもよい。また、制御装置101は、例えば、被制御量を制御するための操作量の探索値を取得し、取得したエンジンEの運転条件と操作量の探索値とから、変換後のエンジンモデルMcを用いて算出することによって、被制御量の推定値を取得してもよい。また、この推定値は、変換後のエンジンモデルMcを用いて算出された被制御量の推定値を、誤差学習テーブル1100を用いて補正した補正後の被制御量の推定値であってもよい。
【0170】
つぎに、制御装置101は、取得した被制御量の推定値と、ステップS1201において取得した被制御量の実値(現在値)との誤差を算出する(ステップS1302)。そして、制御装置101は、算出した誤差が閾値以上であるか否かを判断する(ステップS1303)。
【0171】
ここで、誤差が閾値未満の場合(ステップS1303:No)、制御装置101は、誤差学習処理を呼び出したステップに戻る。一方、誤差が閾値以上の場合(ステップS1303:Yes)、制御装置101は、被制御量の推定値と実値との誤差が小さくなるように、誤差学習テーブル1100を更新して(ステップS1304)、誤差学習処理を呼び出したステップに戻る。
【0172】
これにより、被制御量の推定値と実値(現在値)との誤差に応じて、誤差学習テーブル1100を逐次更新することができる。
【0173】
以上説明したように、実施の形態3にかかる制御装置101によれば、エンジンEの経年変化や環境変化を考慮して、変換後のエンジンモデルMcを用いて算出された被制御量の推定値を補正することができる。これにより、エンジンEの経年変化や環境変化により予測精度が低下するのを防ぐことができる。
【0174】
(実施の形態4)
つぎに、実施の形態4にかかる制御装置101について説明する。実施の形態4では、エンジンEの被制御量として、熱効率、筒内の最大圧力上昇率、トルク、燃焼開始位置、燃焼重心、排出ガス(Nox,Soot,CO,HC,PM)のうちの少なくともいずれかを推定する場合について説明する。なお、実施の形態1~3で説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【0175】
(制御装置101の機能的構成例)
まず、制御装置101の機能的構成例について説明する。
【0176】
図14は、実施の形態4にかかる制御装置101の機能的構成例を示すブロック図である。
図14において、制御装置101は、条件検出部1401と、燃料指標算出部1402と、目標値算出部1403と、推定部1404と、最適化部1405と、評価値算出部1406と、更新部1407と、を含む。条件検出部1401~更新部1407は制御部となる機能であり、具体的には、例えば、
図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
【0177】
条件検出部1401は、制御対象のエンジンEの運転条件と状態量とを取得する。ここで、エンジンEの運転条件は、例えば、エンジン回転数および燃料噴射量である。状態量は、例えば、空気過剰率、燃料噴射圧力、インテークマニホールド圧力、インテークマニホールド酸素濃度、エンジン筒内圧力、排出ガス(Nox,Soot,CO,HC,PM)である。具体的には、例えば、条件検出部1401は、実エンジンシステムESから、エンジンEの運転条件(現在値)と状態量(現在値)とを取得する。
【0178】
燃料指標算出部1402は、取得されたエンジン筒内圧力から、熱効率、筒内の最大圧力上昇率、トルク、燃焼開始位置、燃焼重心を算出する。そして、燃料指標算出部1402は、算出した結果と、取得された排出ガス(Nox,Soot,CO,HC,PM)とをセットにして、エンジンEの燃焼指標とする。エンジンEの燃焼指標は、被制御量の実値として使用される。
【0179】
目標値算出部1403は、取得されたエンジンEの運転条件に基づいて、エンジンEの制御目標値を特定する。制御目標値は、例えば、目標熱効率、目標筒内の最大圧力上昇率、目標トルク、目標燃焼開始位置、目標燃焼重心、目標排出ガス(Nox,Soot,CO,HC,PM)などである。
【0180】
具体的には、例えば、目標値算出部1403は、2次元マップ(不図示)を参照して、エンジンEの運転条件に応じた制御目標値を特定する。2次元マップは、例えば、エンジン回転数と燃料噴射量との組合せに対応付けて、制御目標値を示す。
【0181】
推定部1404は、取得されたエンジンEの運転条件と状態量と操作量の探索値とから、変換後のエンジンモデルMc’を用いて、将来の被制御量の推定値を算出する。ここで、被制御量は、熱効率、筒内の最大圧力上昇率、トルク、燃焼開始位置、燃焼重心、排出ガス(Nox,Soot,CO,HC,PM)の少なくともいずれかである。
【0182】
操作量は、例えば、被制御量を制御するための操作量であり、例えば、多段噴射(プレ、パイロット、メイン、アフタ)の各燃料噴射量と各噴射期間である。操作量の探索値は、被制御量を制御するための操作量の候補値である。操作量の探索値は、例えば、最適化部1405により予め定められた探索ルールに従って探索され、最適化部1405から推定部1404に与えられる。
【0183】
変換後のエンジンモデルMc’は、エンジンモデルM’を変換することにより得られる(例えば、
図2A、
図2B参照)。エンジンモデルM’は、多層のニューロン構造かつReLU構造の活性化関数を有し、エンジンEの運転条件と状態量と操作量とを入力としてエンジンEの動特性を予測するモデルである。
【0184】
エンジンモデルM’は、例えば、エンジンEの複数の運転条件と状態量と操作量とを入力として、将来の被制御量の推定値を出力するモデルである。複数の運転条件と状態量と操作量は、例えば、過去(例えば、4ステップ前)から現時刻までの各ステップにおける運転条件と状態量と操作量である。
【0185】
より詳細に説明すると、例えば、エンジンモデルM’は、エンジン回転数、燃料噴射量、空気過剰率、燃料噴射圧力、インテークマニホールド圧力、インテークマニホールド酸素濃度、多段噴射(プレ、パイロット、メイン、アフタ)の各燃料噴射量と各噴射期間を入力として、熱効率、筒内の最大圧力上昇率、トルク、燃焼開始位置、燃焼重心、排出ガス(Nox,Soot,CO,HC,PM)を出力する。
【0186】
変換後のエンジンモデルMc’は、エンジンモデルM’に基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、各ニューロンの活性化関数が変換されたモデルである。エンジンモデルM’は、例えば、予め作成されてメモリ302、ディスク304などの記憶装置に記憶されている。
【0187】
具体的には、例えば、推定部1404は、エンジンモデルM’に基づいて、変換後のエンジンモデルMc’の各ニューロンの重み係数、バイアスとして、変換前のエンジンモデルM’の各ニューロンの重み係数、バイアスを設定する。また、推定部1404は、変換後のエンジンモデルMc’に入力される変数の上下限値として、エンジンモデルM’に入力される変数の上下限値を設定する。
【0188】
また、推定部1404は、変換後のエンジンモデルMc’から出力される変数の上下限値として、エンジンモデルM’から出力される変数の上下限値を設定する。また、推定部1404は、変換後のエンジンモデルMc’の各ニューロン(活性化関数)から出力される変数の上下限値として、エンジンモデルM’の各ニューロンから出力される変数の上下限値を設定する。
【0189】
入出力変数の上下限値は、例えば、エンジンモデルM’にChirp信号またはAPRBS信号を入力として与えることによって取得される、各入出力変数の最大値と最小値に基づき設定される。なお、エンジンモデルM’を変換する具体的な処理内容は、
図2Aおよび
図2Bを用いて説明したエンジンモデルMの変換処理と同様のため、図示および説明を省略する。また、エンジンモデルM’の変換は、制御装置101において行われてもよく、また、制御装置101とは異なる他のコンピュータにおいて行われてもよい。
【0190】
具体的には、例えば、推定部1404は、エンジンEの運転条件と状態量と操作量の探索値とを、変換後のエンジンモデルMc’に入力することによって、将来の被制御量の推定値を算出する。より詳細に説明すると、例えば、推定部1404は、kステップ前から1ステップ前までの運転条件(過去値)と状態量(過去値)と操作量(過去値)と、運転条件(現在値)と状態量(現在値)と操作量の探索値とを、変換後のエンジンモデルMc’に入力することによって、1ステップ後の被制御量の推定値を算出する。過去の各ステップの運転条件(過去値)と状態量(過去値)と操作量(過去値)は、例えば、メモリ302、ディスク304などの記憶装置に記憶されている。
【0191】
この際、推定部1404は、現時刻から将来にわたる期間(例えば、4秒の間)の被制御量の推定値を算出することにしてもよい。例えば、1ステップを「1秒」とし、現時刻から将来にわたる期間を「4秒間」とする。この場合、推定部1404は、4ステップ後までの各ステップの被制御量の推定値を算出する。
【0192】
ここで、各ステップの被制御量の推定値を算出するにあたり、各ステップにおける運転条件と状態量は、例えば、運転条件(現在値)と状態量(現在値)に固定される。また、各ステップにおける操作量の探索値の組合せパターンは、最適化部1405により予め定められた探索ルールに従って探索され、最適化部1405から推定部1404に与えられる。
【0193】
また、変換後のエンジンモデルMc’のモデル化誤差やセンサ劣化によるドリフト(計測値のズレ)により、エンジンEの動特性の予測精度が低下するおそれがある。このため、推定部1404は、現時刻の被制御量の実値(現在値)と現時刻についての被制御量の推定値との誤差を考慮して、将来の被制御量の推定値を算出することにしてもよい(例えば、
図5参照)。
【0194】
具体的には、例えば、推定部1404は、上記式(11)のような数式を用いて、将来の被制御量の推定値を算出することにしてもよい。被制御量の実値としては、例えば、燃料指標算出部1402によって求められるエンジンEの燃料指標(熱効率、筒内の最大圧力上昇率、トルク、燃焼開始位置、燃焼重心、排出ガス(Nox,Soot,CO,HC,PM))が用いられる。
【0195】
最適化部1405は、被制御量の制御目標値と、算出された被制御量の推定値との誤差に基づいて、被制御量を制御するための操作量の値を決定する。具体的には、例えば、最適化部1405は、被制御量の制御目標値と被制御量の推定値との誤差が最小となるときの探索値を、次のステップで被制御量を制御するための操作量の値に決定してもよい。
【0196】
また、最適化部1405は、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の変化量に基づいて、被制御量を制御するための操作量の値を決定することにしてもよい。ここで、操作量の変化量は、例えば、現在の操作量の値(現在値)と操作量の探索値との差分によって表される。
【0197】
具体的には、例えば、評価値算出部1406は、操作量の探索値それぞれについて、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の変化量に基づいて、制御評価値を算出する。制御評価値は、被制御量を制御するためのコストを表す指標値である。制御評価値は、例えば、値が低いほど評価が高いことを示す。
【0198】
より詳細に説明すると、例えば、評価値算出部1406は、操作量の探索値それぞれについて、評価関数ef’を用いて、制御評価値を算出する。評価関数ef’は、例えば、被制御量の制御目標値と被制御量の推定値との誤差を考慮する項と、操作量の変化量を考慮する項とに重み付けしたコスト関数である。
【0199】
そして、最適化部1405は、例えば、算出された制御評価値に基づいて、操作量の探索値の中から、被制御量を制御するための操作量の値を決定する。より詳細に説明すると、例えば、最適化部1405は、操作量の探索値のうち、制御評価値が最小となる探索値を、被制御量を制御するための操作量の値に決定する。
【0200】
なお、最適化部1405による操作量の探索は、例えば、最小となる制御評価値の変化量がほぼなくなるまで行われてもよく、また、指定の反復回数分行われてもよい。
【0201】
また、現時刻から将来にわたる期間の被制御量の推定値が算出される場合がある。例えば、1ステップを「1秒」とし、現時刻から将来にわたる期間を「4秒間」とする。この場合、最適化部1405は、各ステップにおける操作量の探索値の組合せパターンごとに、4ステップ後までの各ステップについて、評価関数ef’を用いて、制御評価値を算出する。
【0202】
そして、最適化部1405は、組合せパターンごとに、算出した各ステップの制御評価値の合計値(または、平均値)を算出する。つぎに、最適化部1405は、組合せパターンのうち、算出した制御評価値の合計値(または、平均値)が最小となる組合せパターンを特定する。そして、最適化部1405は、特定した組合せパターンにおける1ステップ目(次のステップ)の操作量の探索値を、被制御量を制御するための操作量の値に決定することにしてもよい。
【0203】
これにより、操作量の急峻な変化を抑えつつ、被制御量をできるだけ制御目標値に近づけるための操作量を決定する際の精度の向上を図ることができる。
【0204】
また、最適化部1405は、決定した操作量の値を出力する。具体的には、例えば、最適化部1405は、実エンジンシステムESに対して、次のステップで被制御量を制御する際の操作量として、決定した操作量の値を出力する。実エンジンシステムESは、制御装置101(最適化部1405)から出力される操作量の値に基づいて、エンジンEを制御する。
【0205】
また、エンジンモデルM’に含まれるReLU構造の活性化関数は、例えば、Leaky ReLU構造であってもよい。エンジンモデルM’に含まれる活性化関数をLeaky ReLU構造の活性化関数とすることで、エンジンEの動特性を予測する精度を向上させることができる。
【0206】
更新部1407は、エンジンEの運転条件と状態量と操作量の値との組合せに対応する被制御量の実値を示す教師データに基づいて、変換後のエンジンモデルMc’を更新する。ここで、エンジンEの運転条件と状態量と操作量の値との組合せは、例えば、時刻tの運転条件(現在値)と状態量(現在値)と操作量の出力値との組合せである。
【0207】
操作量の出力値は、時刻tに制御装置101から実エンジンシステムESに出力された操作量の値(例えば、コスト最小の探索値)である。被制御量の実値としては、燃料指標算出部1402によって求められるエンジンEの燃焼指標が用いられる。被制御量の実値は、例えば、操作量の出力値に応じて制御された1ステップ後の被制御量の実値である。ただし、被制御量の実値として、例えば、現時刻(時刻t)の被制御量の実値を用いることにしてもよい。
【0208】
教師データは、例えば、制御装置101によるエンジンE(実エンジンシステムES)の制御が行われるたびに、その都度作成されて、メモリ302、ディスク304などの記憶装置に記憶される。
【0209】
具体的には、例えば、更新部1407は、条件検出部1401によって取得された被制御量の実値(現在値)と、推定部1404によって算出された被制御量の推定値との誤差を算出する。なお、被制御量の実値(現在値)と比較する推定値は、前回算出された被制御量の推定値(コスト最小のときの推定値)であってもよい。あるいは、被制御量の推定値と比較する被制御量の実値は、今回出力された操作量の値に応じて制御された1ステップ後の被制御量の実値であってもよい。
【0210】
そして、更新部1407は、算出した誤差が閾値以上であるか否かを判断する。閾値は、任意に設定可能である。ここで、誤差が閾値未満の場合、更新部1407は、変換後のエンジンモデルMc’の更新を行わない。一方、誤差が閾値以上の場合、更新部1407は、教師データに基づいて、変換後のエンジンモデルMc’を更新する。
【0211】
より詳細に説明すると、例えば、更新部1407は、誤差が閾値以上の場合、教師データに基づく機械学習を行うことにより、被制御量の推定値と実値との誤差が小さくなるように、変換後のエンジンモデルMc’の各ニューロンの重み係数とバイアスを更新する。また、更新部1407は、学習中の各層の各ニューロンの入出力の最大値を取得し、既存の最大値を超える場合には、そのニューロンの入出力の最大値を更新する。同様に、更新部1407は、学習中の各層の各ニューロンの入出力の最小値を取得し、既存の最小値を下回る場合には、そのニューロンの入出力の最小値を更新する。
【0212】
変換後のエンジンモデルMc’が更新された場合、推定部1404は、更新された変換後のエンジンモデルMc’を用いて、取得されたエンジンEの運転条件と状態量と操作量の探索値とから、将来の被制御量の推定値を算出する。
【0213】
なお、制御装置101は、上述した機能部のうち更新部1407を有していなくてもよい。この場合、制御装置101は、実施の形態3で説明したような、誤差学習テーブルを用いて被制御量の予測値を補正することにしてもよい。誤差学習テーブルは、エンジンEの運転条件に対応する被制御量の補正値を記憶する。制御装置101は、例えば、エンジンEの制御中に、誤差学習テーブルを逐次作成したり、更新したりする。ただし、誤差学習テーブルを用いた補正処理や、誤差学習テーブルの更新処理は、実施の形態3で説明した、誤差学習テーブル1100を用いた補正処理や、誤差学習テーブル1100の更新処理と同様のため、図示および説明を省略する。
【0214】
(制御装置101の制御処理手順)
つぎに、制御装置101の制御処理手順について説明する。
【0215】
図15は、実施の形態4にかかる制御装置101の制御処理手順の一例を示すフローチャートである。
図15のフローチャートにおいて、まず、制御装置101は、制御対象のエンジンEの運転条件と状態量とを取得する(ステップS1501)。つぎに、制御装置101は、取得した状態量(エンジン筒内圧力、排出ガス)から、エンジンの燃料指標を算出する(ステップS1502)。エンジンEの燃焼指標は、被制御量の実値として使用される。
【0216】
そして、制御装置101は、取得したエンジンEの運転条件に基づいて、エンジンEの被制御量の制御目標値を特定する(ステップS1503)。つぎに、制御装置101は、第2のモデル更新処理を実行する(ステップS1504)。第2のモデル更新処理は、変換後のエンジンモデルMc’を更新するための処理である。第2のモデル更新処理の具体的な処理手順については、
図16を用いて後述する。
【0217】
つぎに、制御装置101は、被制御量を制御するための操作量の探索値を取得する(ステップS1505)。そして、制御装置101は、取得したエンジンEの運転条件と状態量と操作量の探索値とから、変換後のエンジンモデルMc’を用いて、将来の被制御量の推定値を算出する(ステップS1506)。
【0218】
つぎに、制御装置101は、評価関数ef’を用いて、被制御量の制御目標値と被制御量の推定値との誤差、および、操作量の変化量から制御評価値を算出する(ステップS1507)。操作量の変化量は、例えば、操作量の現在値と操作量の探索値との差分によって表される。
【0219】
そして、制御装置101は、算出した制御評価値が制御評価値minより小さいか否かを判断する(ステップS1508)。制御評価値minは、初期状態では「null」である。なお、ステップS1508において、制御評価値minが初期状態の場合、制御装置101は、ステップS1509に移行する。
【0220】
ここで、制御評価値が制御評価値min以上の場合(ステップS1508:No)、制御装置101は、ステップS1511に移行する。一方、制御評価値が制御評価値minより小さい場合(ステップS1508:Yes)、制御装置101は、取得した操作量の探索値を、仮の最適値として保存する(ステップS1509)。
【0221】
そして、制御装置101は、算出した制御評価値を制御評価値minとする(ステップS1510)。つぎに、制御装置101は、操作量の探索を終了するか否かを判断する(ステップS1511)。操作量の探索は、例えば、制御評価値minの変化量がほぼなくなるまで、または、指定の反復回数分行われる。
【0222】
ここで、操作量の探索を終了しない場合(ステップS1511:No)、制御装置101は、ステップS1505に戻る。一方、操作量の探索を終了する場合には(ステップS1511:Yes)、制御装置101は、保存した仮の最適値である操作量の値を、実エンジンシステムESに出力して(ステップS1512)、本フローチャートによる一連の処理を終了する。
【0223】
これにより、高精度かつ高速なエンジンモデル(変換後のエンジンモデルMc’)を用いて、エンジンEの被制御量を制御することができる。また、変換後のエンジンモデルMc’を逐次更新することができる。
【0224】
つぎに、
図16を用いて、ステップS1504の第2のモデル更新処理の具体的な処理手順について説明する。
【0225】
図16は、第2のモデル更新処理の具体的処理手順の一例を示すフローチャートである。
図16のフローチャートにおいて、まず、制御装置101は、変換後のエンジンモデルMc’を用いて算出された被制御量の推定値を取得する(ステップS1601)。この推定値は、例えば、前回の制御時に算出された被制御量の推定値(コスト最小のときの推定値)であってもよい。また、制御装置101は、例えば、被制御量を制御するための操作量の探索値を取得し、取得したエンジンEの運転条件と状態量と操作量の探索値とから、変換後のエンジンモデルMc’を用いて算出することによって、被制御量の推定値を取得してもよい。
【0226】
つぎに、制御装置101は、取得した被制御量の推定値と、ステップS1502において算出した被制御量の実値(エンジンの燃料指標)との誤差を算出する(ステップS1602)。そして、制御装置101は、算出した誤差が閾値以上であるか否かを判断する(ステップS1603)。
【0227】
ここで、誤差が閾値未満の場合(ステップS1603:No)、制御装置101は、第2のモデル更新処理を呼び出したステップに戻る。一方、誤差が閾値以上の場合(ステップS1603:Yes)、制御装置101は、教師データに基づいて、被制御量の推定値と実値との誤差が小さくなるように、変換後のエンジンモデルMc’を更新して(ステップS1604)、第2のモデル更新処理を呼び出したステップに戻る。
【0228】
これにより、被制御量の推定値と実値(現在値)との誤差に応じて、変換後のエンジンモデルMc’を逐次更新することができる。
【0229】
以上説明したように、実施の形態4にかかる制御装置101によれば、高精度にエンジンEの動特性を予測可能なモデル(変換後のエンジンモデルMc’)を用いて、高性能かつ高速なエンジン制御を実現することができる。例えば、自動車の熱効率、筒内の最大圧力上昇率、トルク、燃焼開始位置、燃焼重心、排出ガス(Nox,Soot,CO,HC,PM)などを適切に制御することにより、排ガスや燃費を抑えたエンジンEの実時間制御を行うことができる。また、変換後のエンジンモデルMc’を逐次更新することにより、エンジンEの経年変化や環境変化により予測精度が低下するのを防ぐことができる。
【0230】
これらのことから、実施の形態1~4にかかる制御装置101によれば、排ガスや燃費などを抑えたエンジンEの実時間制御を行うことができる。
【0231】
なお、上述した各実施の形態は、矛盾のない範囲で組み合わせて実施することができる。また、本実施の形態で説明した制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【0232】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0233】
(付記1)制御対象のエンジンの運転条件と被制御量の実値とを取得し、
多層のニューロン構造かつReLU構造の活性化関数を有し、前記エンジンの運転条件と操作量とを入力として前記エンジンの動特性を予測するエンジンモデルに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、前記各ニューロンの活性化関数が変換された変換後のエンジンモデルを用いて、取得した前記運転条件と、前記被制御量を制御するための操作量の候補値とから、将来の前記被制御量の推定値を算出し、
前記運転条件から特定される前記被制御量の目標値と、算出した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定し、
決定した前記操作量の値を出力する、
制御部を有することを特徴とする制御装置。
【0234】
(付記2)前記制御部は、
前記被制御量の目標値と前記被制御量の推定値との誤差、および、前記操作量の現在値と前記操作量の候補値との差分に基づいて、前記操作量の値を決定する、ことを特徴とする付記1に記載の制御装置。
【0235】
(付記3)前記制御部は、
前記操作量の候補値それぞれについて、前記誤差および前記差分に基づいて、前記被制御量を制御するためのコストを表す制御評価値を算出し、
算出した前記制御評価値に基づいて、前記操作量の候補値の中から前記被制御量を制御するための操作量の値を決定する、
ことを特徴とする付記2に記載の制御装置。
【0236】
(付記4)前記被制御量は、インテークマニホールド圧力、吸入空気量、インテークマニホールド酸素濃度のうちの少なくともいずれかである、ことを特徴とする付記1に記載の制御装置。
【0237】
(付記5)前記運転条件は、エンジン回転数および燃料噴射量である、ことを特徴とする付記4に記載の制御装置。
【0238】
(付記6)前記操作量は、ターボ開度、スロットル開度、EGR開度のうちの少なくともいずれかである、ことを特徴とする付記5に記載の制御装置。
【0239】
(付記7)前記入出力変数の上下限値は、前記エンジンモデルにChirp信号またはAPRBS信号を入力として与えることによって取得される入出力変数の最大値と最小値とに基づき設定される、ことを特徴とする付記1に記載の制御装置。
【0240】
(付記8)前記活性化関数は、Leaky ReLU構造である、ことを特徴とする付記1に記載の制御装置。
【0241】
(付記9)前記変換後のエンジンモデルは、前記運転条件と前記操作量の値との組合せに対応する前記被制御量の実値を示す教師データに基づき更新される、ことを特徴とする付記1に記載の制御装置。
【0242】
(付記10)前記制御部は、
前記エンジンの運転条件に対応する被制御量の補正値を示す補正情報を参照して、取得した前記運転条件に対応する補正値を特定し、
算出した前記被制御量の推定値に、特定した補正値を加算することにより、前記被制御量の推定値を補正し、
前記被制御量の目標値と、補正した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定する、
ことを特徴とする付記1に記載の制御装置。
【0243】
(付記11)制御対象のエンジンの運転条件と被制御量の実値とを取得し、
多層のニューロン構造かつReLU構造の活性化関数を有し、前記エンジンの運転条件と操作量とを入力として前記エンジンの動特性を予測するエンジンモデルに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、前記各ニューロンの活性化関数が変換された変換後のエンジンモデルを用いて、取得した前記運転条件と、前記被制御量を制御するための操作量の候補値とから、将来の前記被制御量の推定値を算出し、
前記運転条件から特定される前記被制御量の目標値と、算出した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定し、
決定した前記操作量の値を出力する、
処理をコンピュータが実行することを特徴とする制御方法。
【0244】
(付記12)制御対象のエンジンの運転条件と被制御量の実値とを取得し、
多層のニューロン構造かつReLU構造の活性化関数を有し、前記エンジンの運転条件と操作量とを入力として前記エンジンの動特性を予測するエンジンモデルに基づき、各ニューロンの重み係数、バイアスおよび入出力変数の上下限値が設定され、バイナリ変数を含む線形不等式関数を用いて、前記各ニューロンの活性化関数が変換された変換後のエンジンモデルを用いて、取得した前記運転条件と、前記被制御量を制御するための操作量の候補値とから、将来の前記被制御量の推定値を算出し、
前記運転条件から特定される前記被制御量の目標値と、算出した前記被制御量の推定値との誤差に基づいて、前記被制御量を制御するための操作量の値を決定し、
決定した前記操作量の値を出力する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
【符号の説明】
【0245】
101 制御装置
200,210,M,M’ エンジンモデル
220,Mc,Mc’ 変換後のエンジンモデル
300 バス
301 CPU
302 メモリ
303 ディスクドライブ
304 ディスク
305 通信I/F
306 可搬型記録媒体I/F
307 可搬型記録媒体
310 ネットワーク
401,1401 条件検出部
402,1403 目標値算出部
403,1404 推定部
404,1405 最適化部
405,1406 評価値算出部
701,1407 更新部
1001 誤差学習部
1100 誤差学習テーブル
1402 燃料指標算出部