(57)【特許請求の範囲】
【請求項１】
記憶装置と、実行装置と、を備え、
前記記憶装置は、第１間隔に含まれる連続する複数の第２間隔のそれぞれにおける瞬時速度パラメータである時系列データを入力とし、内燃機関に失火が生じた確率を出力する写像を規定するデータである写像データを記憶しており、
前記実行装置は、
前記内燃機関のクランク軸の回転挙動を検知するセンサの検出値に基づく前記瞬時速度パラメータを取得する取得処理、
前記瞬時速度パラメータである時系列データを入力とする前記写像の出力に基づき前記内燃機関の失火の有無を判定する判定処理、を実行し、
前記写像データは、機械学習によって学習済みのデータであり、
前記瞬時速度パラメータは、前記内燃機関のクランク軸の回転速度に応じたパラメータであり、
前記第１間隔は、前記クランク軸の回転角度間隔であって圧縮上死点を含む間隔であり、
前記第２間隔は、前記クランク軸の回転角度間隔であって前記圧縮上死点の出現間隔よりも小さい間隔であり、
前記写像は、前記第１間隔内に圧縮上死点が出現する少なくとも１つの気筒に関して失火が生じた確率を出力するものであり、
前記判定処理は、前記写像の出力である前記確率が予め定められた閾値以上になった回数が、予め定められた所定回数以上となる場合に前記内燃機関の失火が生じたと判定する処理であり、
前記実行装置は、
前記取得処理によって取得された前記瞬時速度パラメータである時系列データが予め定められた許容範囲外である場合に、前記瞬時速度パラメータである時系列データを前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、
前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の前記瞬時速度パラメータである時系列データを入力とする前記写像の出力に基づき前記内燃機関の失火の有無を判定する
内燃機関の失火の有無の判定装置。
【請求項２】
記憶装置と、実行装置と、を備え、
前記記憶装置は、内燃機関の燃焼室内の混合気の空燃比を理論空燃比とする上で必要な燃料量に対する実際の噴射量の過剰量に応じた変数である過剰量変数の第１所定期間における時系列データ、および前記内燃機関の排気通路に設けられた触媒の下流側の空燃比センサの検出値に応じた変数である下流側検出変数の第２所定期間における時系列データを入力とし、前記触媒の劣化度合いに関する変数である劣化度合い変数を出力する写像を規定するデータである写像データを記憶しており、
前記実行装置は、
前記過剰量変数の第１所定期間における時系列データ、および前記下流側検出変数の第２所定期間における時系列データを取得する取得処理、
前記過剰量変数の第１所定期間における時系列データ、および前記下流側検出変数の第２所定期間における時系列データを入力とする前記写像の出力に基づき前記内燃機関の排気通路に設けられた触媒の劣化度合いを判定する判定処理、を実行し、
前記写像データは、機械学習によって学習済みのデータであり、
前記劣化度合い変数は、値が大きいほど劣化度合いが大きいことを表現する変数であり、
前記判定処理は、前記写像の出力である前記劣化度合い変数が大きいほど前記触媒が劣化していると判定する処理であり、
前記実行装置は、
前記取得処理によって取得された前記過剰量変数および前記下流側検出変数が予め定められた許容範囲外である場合に、前記過剰量変数および前記下流側検出変数を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、
前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の前記過剰量変数および前記下流側検出変数を入力とする前記写像の出力に基づき前記内燃機関の排気通路に設けられた触媒の劣化度合いを判定する
内燃機関の排気通路に設けられた触媒の劣化度合いの判定装置。
【請求項３】
記憶装置と、実行装置と、を備え、
前記記憶装置は、内燃機関の操作部であって前記内燃機関の排気通路に設けられた触媒の暖機処理に用いる操作部の操作量に関する変数である暖機操作量変数、および前記触媒の温度の推定値の前回値を入力として前記触媒の温度の推定値を出力する写像を規定するデータである写像データと、前記内燃機関の始動時からの前記内燃機関の吸入空気量の積算値と前記触媒の温度とを対応付ける対応付けデータと、を記憶しており、
前記実行装置は、
前記暖機操作量変数、および前記触媒の温度の推定値の前回値を取得する取得処理、
前記暖機操作量変数と前記触媒の温度の推定値の前回値とを入力とする前記写像の出力、および前記対応付けデータに基づいて、前記暖機処理における異常の有無を判定する判定処理、を実行し、
前記判定処理は、前記内燃機関の始動時からの前記内燃機関の吸気空気量の積算値と前記写像の出力である前記推定値との対応関係が、前記対応付けデータにおける前記内燃機関の始動時からの前記内燃機関の吸気空気量の積算値と前記触媒の温度との対応関係と異なる場合に、前記暖機処理に異常があると判定する処理であり、
前記写像データは、機械学習によって学習済みのデータであり、
前記実行装置は、
前記取得処理によって取得された前記暖機操作量変数および前記触媒の温度の推定値の前回値が予め定められた許容範囲外である場合に、前記暖機操作量変数および前記触媒の温度の推定値の前回値を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、
前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の前記暖機操作量変数と前記触媒の温度の推定値の前回値とを入力とする前記写像の出力、および前記対応付けデータに基づき前記暖機処理における異常の有無を判定する
内燃機関の排気通路に設けられた触媒の暖機処理における異常の有無の判定装置。
【請求項４】
記憶装置と、実行装置と、を備え、
前記記憶装置は、内燃機関に吸入される空気の温度に関する変数である吸気温変数および前記内燃機関のシリンダ壁面温度に関する変数である壁面変数の２つの変数のうちの少なくとも１つ、および前記内燃機関の排気通路に排出された排気中のＰＭを捕集するフィルタに流入する流体の流量を示す変数である流量変数を入力とし、前記排気通路へのＰＭの排出量であるＰＭ排出量を出力する写像を規定するデータである写像データを記憶しており、
前記実行装置は、
前記吸気温変数および前記壁面変数の２つの変数のうちの少なくとも１つ、および前記流量変数を取得する取得処理、
前記吸気温変数および前記壁面変数の２つの変数のうちの少なくとも１つ、および前記流量変数を入力とする前記写像の出力である前記ＰＭ排出量と、前記排気通路に排出された排気中のＰＭのうちの前記フィルタにおいて捕集される割合である捕集率と、前記フィルタによるＰＭの酸化量であるＰＭ酸化量と、に基づいて前記フィルタに捕集されたＰＭ堆積量を算出し、前記ＰＭ堆積量が所定量以上であるか否かを判定する判定処理、を実行し、
前記判定処理は、前記ＰＭ排出量に前記捕集率を乗算した値から前記ＰＭ酸化量を減算した値を、前記ＰＭ堆積量の前回値に加算することによって前記ＰＭ堆積量を算出する処理であり、
前記写像データは、機械学習によって学習済みのデータであり、
前記実行装置は、
前記取得処理によって取得された前記吸気温変数、前記壁面変数、および前記流量変数が予め定められた許容範囲外である場合に、前記吸気温変数、前記壁面変数、および前記流量変数を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、
前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の、前記吸気温変数および前記壁面変数の２つの変数のうちの少なくとも１つおよび前記流量変数を入力とする前記写像の出力である前記ＰＭ排出量と、前記捕集率と、前記ＰＭ酸化量と、に基づき算出される前記ＰＭ堆積量が所定量以上であるか否かを判定する
内燃機関の排気通路に設けられたフィルタに捕集されたＰＭ堆積量の判定装置。
【請求項５】
記憶装置と、実行装置と、を備え、
前記記憶装置は、内燃機関の燃焼室内の混合気の空燃比を理論空燃比とする上で必要な燃料量に対する実際の噴射量の過剰量に応じた変数である過剰量変数の第３所定期間における時系列データ、および前記内燃機関の排気通路に設けられた空燃比センサの検出値に関する変数である空燃比検出変数の第４所定期間における時系列データを入力とし、前記空燃比センサの応答性が低下する異常の有無に関する変数である異常判定変数を出力する写像を規定するデータである写像データを記憶しており、
前記実行装置は、
前記過剰量変数の第３所定期間における時系列データ、および前記空燃比検出変数の第４所定期間における時系列データを取得する取得処理、
前記過剰量変数の第３所定期間における時系列データ、および前記空燃比検出変数の第４所定期間における時系列データを入力とする前記写像の出力に基づき前記空燃比センサの異常の有無を判定する判定処理、を実行し、
前記異常判定変数は、前記空燃比センサの異常が生じている可能性が高い場合に低い場合よりも大きくなる第１変数と、前記空燃比センサの異常が生じていない可能性が高い場合に低い場合よりも大きくなる第２変数とを含んでおり、
前記判定処理は、前記第１変数が前記第２変数よりも大きい場合には、前記空燃比センサに異常があると判定する処理であり、
前記写像データは、機械学習によって学習済みのデータであり、
前記実行装置は、
前記取得処理によって取得された前記過剰量変数および前記空燃比検出変数が予め定められた許容範囲外である場合に、前記過剰量変数および前記空燃比検出変数を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、
前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の、前記過剰量変数の前記第３所定期間における時系列データおよび前記空燃比検出変数の前記第４所定期間における時系列データを入力とする前記写像の出力に基づき前記空燃比センサの異常の有無を判定する
内燃機関の排気通路に設けられた空燃比センサの異常の有無の判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の失火の有無の判定装置、内燃機関の排気通路に設けられた触媒の劣化度合いの判定装置、内燃機関の排気通路に設けられた触媒の暖機処理における異常の有無の判定装置、内燃機関の排気通路に設けられたフィルタに捕集されたＰＭ堆積量の判定装置、および内燃機関の排気通路に設けられた空燃比センサの異常の有無の判定装置に関する。
【背景技術】
【０００２】
特許文献１に記載の失火検出システムでは、規定周期毎にサンプリングした内燃機関のクランク軸の回転速度の時系列データを入力層に入力し、失火が生じた気筒の情報を出力層から出力するように構成された階層型神経回路モデルが用いられている。階層型神経回路モデルは、教師あり学習をされたものとなっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平４−９１３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載のような失火検出システムにおいて、階層型神経回路モデルには、内燃機関のクランク軸の回転速度に応じたパラメータが、許容できるデータの範囲を超えて、入力層にデータが入力される場合がある。階層型神経回路モデルを利用した失火検出システムにおいては、このように許容できない範囲を超えたデータが入力層に入力されても、学習済みの情報に基づいて処理が行われ、出力層から情報が出力される。しかしながら、許容できない範囲のデータが入力層に入力された場合には、階層型神経回路モデルが出力層から出力する情報として、想定外の情報が出力される虞が捨てきれない。
【課題を解決するための手段】
【０００５】
以下、上記課題を解決するための手段およびその作用効果について記載する。
１．記憶装置と、実行装置と、を備え、前記記憶装置は、第１間隔に含まれる連続する複数の第２間隔のそれぞれにおける瞬時速度パラメータである時系列データを入力とし、内燃機関に失火が生じた確率を出力する写像を規定するデータである写像データを記憶しており、前記実行装置は、前記内燃機関のクランク軸の回転挙動を検知するセンサの検出値に基づく前記瞬時速度パラメータを取得する取得処理、前記瞬時速度パラメータである時系列データを入力とする前記写像の出力に基づき前記内燃機関の失火の有無を判定する判定処理、を実行し、前記写像データは、機械学習によって学習済みのデータであり、前記瞬時速度パラメータは、前記内燃機関のクランク軸の回転速度に応じたパラメータであり、前記第１間隔は、前記クランク軸の回転角度間隔であって圧縮上死点を含む間隔であり、前記第２間隔は、前記クランク軸の回転角度間隔であって前記圧縮上死点の出現間隔よりも小さい間隔であり、前記写像は、前記第１間隔内に圧縮上死点が出現する少なくとも１つの気筒に関して失火が生じた確率を出力するものであり、前記判定処理は、前記写像の出力である前記確率が予め定められた閾値以上になった回数が、予め定められた所定回数以上となる場合に前記内燃機関の失火が生じたと判定する処理であり、前記実行装置は、前記取得処理によって取得された前記瞬時速度パラメータである時系列データが予め定められた許容範囲外である場合に、前記瞬時速度パラメータである時系列データを前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の前記瞬時速度パラメータである時系列データを入力とする前記写像の出力に基づき前記内燃機関の失火の有無を判定する内燃機関の失火の有無の判定装置である。
【０００６】
上記構成によれば、判定処理を実行する際に入力される値は、許容範囲外である場合には、取得した値よりも、許容範囲に近づけられるか、または許容範囲内の値とされる。そのため、写像に入力される値が過度に大きかったり小さかったりすることを抑制する。その結果、写像の出力が想定外の値となることを抑制する。上記構成によれば、触媒の温度を推定するうえで、ガード処理の技術を適用できる。
【００１３】
２．記憶装置と、実行装置と、を備え、前記記憶装置は、内燃機関の燃焼室内の混合気の空燃比を理論空燃比とする上で必要な燃料量に対する実際の噴射量の過剰量に応じた変数である過剰量変数の第１所定期間における時系列データ、および前記内燃機関の排気通路に設けられた触媒の下流側の空燃比センサの検出値に応じた変数である下流側検出変数の第２所定期間における時系列データを入力とし、前記触媒の劣化度合いに関する変数である劣化度合い変数を出力する写像を規定するデータである写像データを記憶しており、前記実行装置は、前記過剰量変数の第１所定期間における時系列データ、および前記下流側検出変数の第２所定期間における時系列データを取得する取得処理、前記過剰量変数の第１所定期間における時系列データ、および前記下流側検出変数の第２所定期間における時系列データを入力とする前記写像の出力に基づき前記内燃機関の排気通路に設けられた触媒の劣化度合いを判定する判定処理、を実行し、前記写像データは、機械学習によって学習済みのデータであり、前記劣化度合い変数は、値が大きいほど劣化度合いが大きいことを表現する変数であり、前記判定処理は、前記写像の出力である前記劣化度合い変数が大きいほど前記触媒が劣化していると判定する処理であり、前記実行装置は、前記取得処理によって取得された前記過剰量変数および前記下流側検出変数が予め定められた許容範囲外である場合に、前記過剰量変数および前記下流側検出変数を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の前記過剰量変数および前記下流側検出変数を入力とする前記写像の出力に基づき前記内燃機関の排気通路に設けられた触媒の劣化度合いを判定する内燃機関の排気通路に設けられた触媒の劣化度合いの判定装置である。上記構成によれば、内燃機関の排気通路に設けられた触媒の劣化度合いを判定するうえで、ガード処理の技術を適用できる。
【００１４】
３．記憶装置と、実行装置と、を備え、前記記憶装置は、内燃機関の操作部であって前記内燃機関の排気通路に設けられた触媒の暖機処理に用いる操作部の操作量に関する変数である暖機操作量変数、および前記触媒の温度の推定値の前回値を入力として前記触媒の温度の推定値を出力する写像を規定するデータである写像データと、前記内燃機関の始動時からの前記内燃機関の吸入空気量の積算値と前記触媒の温度とを対応付ける対応付けデータと、を記憶しており、前記実行装置は、前記暖機操作量変数、および前記触媒の温度の推定値の前回値を取得する取得処理、前記暖機操作量変数と前記触媒の温度の推定値の前回値とを入力とする前記写像の出力、および前記対応付けデータに基づいて、前記暖機処理における異常の有無を判定する判定処理、を実行し、前記判定処理は、前記内燃機関の始動時からの前記内燃機関の吸気空気量の積算値と前記写像の出力である前記推定値との対応関係が、前記対応付けデータにおける前記内燃機関の始動時からの前記内燃機関の吸気空気量の積算値と前記触媒の温度との対応関係と異なる場合に、前記暖機処理に異常があると判定する処理であり、前記写像データは、機械学習によって学習済みのデータであり、前記実行装置は、前記取得処理によって取得された前記暖機操作量変数および前記触媒の温度の推定値の前回値が予め定められた許容範囲外である場合に、前記暖機操作量変数および前記触媒の温度の推定値の前回値を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の前記暖機操作量変数と前記触媒の温度の推定値の前回値とを入力とする前記写像の出力、および前記対応付けデータに基づき前記暖機処理における異常の有無を判定する内燃機関の排気通路に設けられた触媒の暖機処理における異常の有無の判定装置である。上記構成によれば、内燃機関の排気通路に設けられた触媒の暖機処理における異常の有無を判定するうえで、ガード処理の技術を適用できる。
【００１６】
４．記憶装置と、実行装置と、を備え、前記記憶装置は、内燃機関に吸入される空気の温度に関する変数である吸気温変数および前記内燃機関のシリンダ壁面温度に関する変数である壁面変数の２つの変数のうちの少なくとも１つ、および前記内燃機関の排気通路に排出された排気中のＰＭを捕集するフィルタに流入する流体の流量を示す変数である流量変数を入力とし、前記排気通路へのＰＭの排出量であるＰＭ排出量を出力する写像を規定するデータである写像データを記憶しており、前記実行装置は、前記吸気温変数および前記壁面変数の２つの変数のうちの少なくとも１つ、および前記流量変数を取得する取得処理、前記吸気温変数および前記壁面変数の２つの変数のうちの少なくとも１つ、および前記流量変数を入力とする前記写像の出力である前記ＰＭ排出量と、前記排気通路に排出された排気中のＰＭのうちの前記フィルタにおいて捕集される割合である捕集率と、前記フィルタによるＰＭの酸化量であるＰＭ酸化量と、に基づいて前記フィルタに捕集されたＰＭ堆積量を算出し、前記ＰＭ堆積量が所定量以上であるか否かを判定する判定処理、を実行し、前記判定処理は、前記ＰＭ排出量に前記捕集率を乗算した値から前記ＰＭ酸化量を減算した値を、前記ＰＭ堆積量の前回値に加算することによって前記ＰＭ堆積量を算出する処理であり、前記写像データは、機械学習によって学習済みのデータであり、前記実行装置は、前記取得処理によって取得された前記吸気温変数、前記壁面変数、および前記流量変数が予め定められた許容範囲外である場合に、前記吸気温変数、前記壁面変数、および前記流量変数を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の、前記吸気温変数および前記壁面変数の２つの変数のうちの少なくとも１つおよび前記流量変数を入力とする前記写像の出力である前記ＰＭ排出量と、前記捕集率と、前記ＰＭ酸化量と、に基づき算出される前記ＰＭ堆積量が所定量以上であるか否かを判定する内燃機関の排気通路に設けられたフィルタに捕集されたＰＭ堆積量の判定装置である。上記構成によれば、内燃機関の排気通路に排出された排気中のＰＭを捕集するフィルタに捕集されたＰＭ量の推定値を判定するうえで、ガード処理の技術を適用できる。
【００１７】
５．記憶装置と、実行装置と、を備え、前記記憶装置は、内燃機関の燃焼室内の混合気の空燃比を理論空燃比とする上で必要な燃料量に対する実際の噴射量の過剰量に応じた変数である過剰量変数の第３所定期間における時系列データ、および前記内燃機関の排気通路に設けられた空燃比センサの検出値に関する変数である空燃比検出変数の第４所定期間における時系列データを入力とし、前記空燃比センサの応答性が低下する異常の有無に関する変数である異常判定変数を出力する写像を規定するデータである写像データを記憶しており、前記実行装置は、前記過剰量変数の第３所定期間における時系列データ、および前記空燃比検出変数の第４所定期間における時系列データを取得する取得処理、前記過剰量変数の第３所定期間における時系列データ、および前記空燃比検出変数の第４所定期間における時系列データを入力とする前記写像の出力に基づき前記空燃比センサの異常の有無を判定する判定処理、を実行し、前記異常判定変数は、前記空燃比センサの異常が生じている可能性が高い場合に低い場合よりも大きくなる第１変数と、前記空燃比センサの異常が生じていない可能性が高い場合に低い場合よりも大きくなる第２変数とを含んでおり、前記判定処理は、前記第１変数が前記第２変数よりも大きい場合には、前記空燃比センサに異常があると判定する処理であり、前記写像データは、機械学習によって学習済みのデータであり、前記実行装置は、前記取得処理によって取得された前記過剰量変数および前記空燃比検出変数が予め定められた許容範囲外である場合に、前記過剰量変数および前記空燃比検出変数を前記許容範囲に近づけるまたは前記許容範囲内の値にするガード処理を実行し、前記ガード処理を実行した場合には、その後の前記判定処理において前記ガード処理後の、前記過剰量変数の前記第３所定期間における時系列データおよび前記空燃比検出変数の前記第４所定期間における時系列データを入力とする前記写像の出力に基づき前記空燃比センサの異常の有無を判定する内燃機関の排気通路に設けられた空燃比センサの異常の有無の判定装置である。上記構成によれば、内燃機関の排気通路に設けられた空燃比センサの異常の有無を判定するうえで、ガード処理の技術を適用できる。
【図面の簡単な説明】
【００２６】
【図１】第１の実施形態にかかる制御装置および車両の駆動系の構成を示す図。
【図２】同実施形態にかかる触媒温度の推定値の判定処理の手順を示す流れ図。
【図３】同実施形態にかかる写像データを生成するシステムを示す図。
【図４】同実施形態にかかる写像データの学習処理の手順を示す流れ図。
【図５】第２の実施形態にかかる状態判定システムの構成を示す図。
【図６】（ａ）および（ｂ）は、第２の実施形態にかかる各処理の手順を示す流れ図。
【図７】第３の実施形態にかかる各処理の手順を示す流れ図。
【図８】第４の実施形態にかかる各処理の手順を示す流れ図。
【図９】第５の実施形態にかかる各処理の手順を示す流れ図。
【図１０】第６の実施形態にかかる各処理の手順を示す流れ図。
【図１１】同実施形態にかかる触媒の部分領域を示す図。
【図１２】同実施形態にかかる触媒暖機監視処理の手順を示す流れ図。
【図１３】第７の実施形態にかかる各処理の手順を示す流れ図。
【図１４】第８の実施形態にかかる各処理の手順を示す流れ図。
【図１５】第９の実施形態にかかる各処理の手順を示す流れ図。
【図１６】第１０の実施形態にかかる各処理の手順を示す流れ図。
【図１７】第１１の実施形態にかかる各処理の手順を示す流れ図。
【図１８】第１２の実施形態にかかる各処理の手順を示す流れ図。
【図１９】第１３の実施形態にかかる各処理の手順を示す流れ図。
【図２０】第１４の実施形態にかかる各処理の手順を示す流れ図。
【図２１】第１５の実施形態にかかる内燃機関の構成を示す図。
【図２２】同実施形態にかかる各処理の手順を示す流れ図。
【発明を実施するための形態】
【００２７】
＜第１の実施形態＞
以下、内燃機関の状態判定装置にかかる第１の実施形態について図面を参照しつつ説明する。
【００２８】
図１に示す車両ＶＣに搭載された内燃機関１０において、吸気通路１２には、スロットルバルブ１４が設けられている。吸気通路１２から吸入された空気は、吸気バルブ１６が開弁することによって各気筒＃１〜＃４の燃焼室１８に流入する。燃焼室１８には、燃料噴射弁２０によって燃料が噴射される。燃焼室１８において、空気と燃料との混合気は、点火装置２２による火花放電によって燃焼に供され、燃焼によって生じたエネルギは、クランク軸２４の回転エネルギとして取り出される。燃焼に供された混合気は、排気バルブ２６の開弁に伴って、排気として、排気通路２８に排出される。排気通路２８には、排気中の粒子状物質を捕集するフィルタであって酸素吸蔵能力を有した三元触媒が担持されたフィルタである上流側触媒３４が設けられている。また、上流側触媒３４の下流には、酸素吸蔵能力を有した三元触媒である下流側触媒３６が設けられている。また、排気通路２８のうち、上流側触媒３４より上流側には、ＥＧＲ通路３２が接続されている。排気通路２８は、ＥＧＲ通路３２を介して吸気通路１２に連通されている。ＥＧＲ通路３２には、その流路断面積を調整するＥＧＲバルブ３３が設けられている。
【００２９】
燃料噴射弁２０には、燃料タンク３８に貯蔵された燃料が低圧燃料ポンプ３７および高圧燃料ポンプ３９を介して供給される。燃料タンク３８内で生じた燃料蒸気は、キャニスタ４０に捕集される。キャニスタ４０は、パージ通路４２を介して吸気通路１２に接続されており、パージ通路４２の流路断面積は、パージバルブ４４によって調整される。
【００３０】
また、吸気通路１２のスロットルバルブ１４より下流側には、ブローバイガスを供給するブローバイガス送出路１５の上流端が接続している。ブローバイガス送出路１５の下流端は、図示しない機関クランクケースに接続されている。ブローバイガス送出路１５にはＰＣＶバルブ１３が取り付けられている。
【００３１】
クランク軸２４の回転動力は、吸気側バルブタイミング可変装置４６を介して吸気側カム軸４８に伝達される。吸気側バルブタイミング可変装置４６は、吸気側カム軸４８とクランク軸２４との相対的な回転位相差を変更する。
【００３２】
内燃機関１０のクランク軸２４には、トルクコンバータ６０を介して変速装置６４の入力軸６６が連結可能となっている。トルクコンバータ６０は、ロックアップクラッチ６２を備えており、ロックアップクラッチ６２が締結状態となることにより、クランク軸２４と入力軸６６とが連結される。変速装置６４の出力軸６８には、駆動輪６９が機械的に連結されている。
【００３３】
クランク軸２４には、クランク軸２４の回転角度を示す複数個（ここでは、３４個）の歯部５２が設けられたクランクロータ５０が結合されている。クランクロータ５０には、基本的には、１０°ＣＡ間隔で歯部５２が設けられているものの、隣接する歯部５２間の間隔が３０°ＣＡとなる箇所である欠け歯部５４が１箇所設けられている。これは、クランク軸２４の基準となる回転角度を示すためのものである。クランクロータ５０の近傍には、クランク角センサ８０が設置されている。クランク角センサ８０は、歯部５２の近接、離間に応じた磁束の変化を短形波のパルス信号に変換して出力する。以下の説明では、こうしたクランク角センサ８０の出力信号をクランク信号Ｓｃｒと記載する。
【００３４】
制御装置７０は、内燃機関１０を制御対象とし、その制御量であるトルクや排気成分比率等を制御するために、スロットルバルブ１４や、燃料噴射弁２０、点火装置２２、ＥＧＲバルブ３３、吸気側バルブタイミング可変装置４６等を操作する。
【００３５】
制御装置７０は、制御量の制御に際し、クランク角センサ８０の出力信号であるクランク信号Ｓｃｒや、エアフローメータ８２によって検出される吸入空気量Ｇａを参照する。また制御装置７０は、上流側触媒３４の上流に設けられた排気温センサ８１によって検出される排気温Ｔｅｘｕや、上流側触媒３４の上流側に設けられた上流側空燃比センサ８３の検出値である上流側検出値Ａｆｕを参照する。また制御装置７０は、上流側触媒３４と下流側触媒３６との間に設けられた下流側空燃比センサ８４の検出値である下流側検出値Ａｆｄや、車速センサ８６によって検出される車速ＳＰＤ、外気温センサ８８によって検出される外気温Ｔｏｕｔを参照する。また制御装置７０は、吸気側カム角センサ８７の出力信号Ｓｃａや、水温センサ８９によって検出される水温ＴＨＷを参照する。また制御装置７０は、アルコール濃度センサ９４によって検出される燃料のアルコール濃度Ｄａを参照する。また制御装置７０は、吸気温センサ９５によって検出される吸気温ＴＯや、スロットルバルブ１４下流の吸気通路１２に設けられる吸気圧センサ９６によって検出される吸気圧Ｐｉｎ、大気圧センサ９７によって検出される大気圧Ｐａを参照する。また制御装置７０は、内燃機関１０の振動を検出するノッキングセンサ９２からの検出信号Ｓｎｃを参照する。また制御装置７０は、キャニスタ内圧センサ９３によって検出されるキャニスタ内圧Ｐｅを参照する。
【００３６】
制御装置７０は、ＣＰＵ７２、ＲＯＭ７４、電気的に書き換え可能な不揮発性メモリである記憶装置７６、および周辺回路７７を備え、それらがローカルネットワーク７８によって通信可能とされたものである。なお、周辺回路７７は、内部の動作を規定するクロック信号を生成する回路や、電源回路、リセット回路等を含む。
【００３７】
制御装置７０は、ＲＯＭ７４に記憶されたプログラムをＣＰＵ７２が実行することによって、内燃機関の状態の判定および上記制御量の制御を実行する。本実施形態においては、制御装置７０は、触媒温度の推定値の判定および上記制御量の制御を実行する。
【００３８】
図２に、上流側触媒３４の温度の推定値を算出する触媒温度推定処理の手順を示す。図２に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。なお、以下では、先頭に「Ｓ」が付与された数字によって、各処理のステップ番号を表現する。
【００３９】
図２に示す一連の処理において、ＣＰＵ７２は、まず、排気温平均値Ｔｅｘｕａｖｅ、上流側平均値Ａｆｕａｖｅ、吸入空気量Ｇａ、回転速度ＮＥ、および充填効率ηのそれぞれについての、所定期間における時系列データと、前回、図２の処理によって算出された触媒温度である上流側触媒温度Ｔｃａｔの前回値と、を取得する（Ｓ１０）。以下では、サンプリングタイミングが古い順に、「１，２，…，ｓｎ」として、たとえば回転速度ＮＥの時系列データを「ＮＥ（１）〜ＮＥ（ｓｎ）」と記載する。ここで、「ｓｎ」は、各変数の時系列データに含まれるデータ数である。
【００４０】
排気温平均値Ｔｅｘｕａｖｅは、上記時系列データのサンプリング間隔における排気温Ｔｅｘｕの平均値である。すなわち、ＣＰＵ７２は、時系列データのサンプリング間隔の間に、排気温Ｔｅｘｕを複数回サンプリングし、それらの平均値を算出し、排気温平均値Ｔｅｘｕａｖｅとする。同様に、上流側平均値Ａｆｕａｖｅは、上記時系列データのサンプリング間隔における上流側検出値Ａｆｕの平均値である。回転速度ＮＥは、クランク角センサ８０のクランク信号Ｓｃｒに基づきＣＰＵ７２により算出される。充填効率ηは、燃焼室１８内に充填される空気量を定めるパラメータであり、ＣＰＵ７２により回転速度ＮＥおよび吸入空気量Ｇａに基づき算出される。
【００４１】
次にＣＰＵ７２は、Ｓ１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ１１）。上限ガード値は、取得値の種類毎に設定されており、排気温平均値Ｔｅｘｕａｖｅの上限ガード値、上流側平均値Ａｆｕａｖｅの上限ガード値、吸入空気量Ｇａの上限ガード値、回転速度ＮＥの上限ガード値、および充填効率ηの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【００４２】
取得値が上限ガード値以下である場合（Ｓ１１：ＹＥＳ）、ＣＰＵ７２は、Ｓ１０において取得した取得値が、各取得値に応じて上限ガード値よりも小さい値として予め定められた下限ガード値以上であるか否かを判定する（Ｓ１２）。下限ガード値は、取得値の種類毎に設定されており、排気温平均値Ｔｅｘｕａｖｅの下限ガード値、上流側平均値Ａｆｕａｖｅの下限ガード値、吸入空気量Ｇａの下限ガード値、回転速度ＮＥの下限ガード値、および充填効率ηの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【００４３】
取得値が下限ガード値以上である場合（Ｓ１２：ＹＥＳ）、次にＣＰＵ７２は、上流側触媒温度Ｔｃａｔを出力する写像の入力変数ｘ（１）〜ｘ（５ｓｎ＋１）に、Ｓ１０の処理によって取得した取得値を代入する（Ｓ１３）。すなわち、ＣＰＵ７２は、ｍ＝１〜ｓｎとすると、入力変数ｘ（ｍ）に排気温平均値Ｔｅｘｕａｖｅ（ｍ）を代入し、入力変数ｘ（ｓｎ＋ｍ）に上流側平均値Ａｆｕａｖｅ（ｍ）を代入し、入力変数ｘ（２ｓｎ＋ｍ）に吸入空気量Ｇａ（ｍ）を代入し、入力変数ｘ（３ｓｎ＋ｍ）に回転速度ＮＥ（ｍ）を代入する。またＣＰＵ７２は、入力変数ｘ（４ｓｎ＋ｍ）に充填効率η（ｍ）を代入し、入力変数ｘ（５ｓｎ＋１）に上流側触媒温度Ｔｃａｔの前回値を代入する。
【００４４】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（５ｓｎ＋１）を入力することによって、上流側触媒温度Ｔｃａｔを算出する（Ｓ１４）。
【００４５】
本実施形態において、この写像は、中間層が「α」個であって且つ、各中間層の活性化関数ｈ１〜ｈαが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力とゼロとのうちの小さくない方を出力する関数である。たとえば、第１の中間層の各ノードの値は、係数ｗ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜５ｓｎ＋１）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（５ｓｎ＋１）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αとすると、第ｍの中間層の各ノードの値は、係数ｗ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。図２に示す値ｎ１，ｎ２，…，ｎαは、それぞれ、第１、第２、…、第αの中間層のノード数である。ちなみに、ｗ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【００４６】
なお、ＣＰＵ７２は、Ｓ１４の処理が完了する場合には、図２に示す一連の処理を一旦終了する。ちなみに、図２の処理を最初に実行する場合には、上流側触媒温度Ｔｃａｔの前回値として、予め定めておいたデフォルト値を用いればよい。デフォルト値が実際の温度からずれている場合であっても、図２の処理が繰り返されることにより、上流側触媒温度Ｔｃａｔは正しい値へと収束する。
【００４７】
ところで、Ｓ１０において取得した取得値が上限ガード値を超えている場合（Ｓ１１：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ１５）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ１３，Ｓ１４の処理をされる。
【００４８】
また、Ｓ１０において取得した取得値が下限ガード値未満である場合（Ｓ１２：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ１６）。これにより下限ガード値未満の取得値は、下限ガード値のと同一値として設定しなおされ、その後上述したＳ１３，Ｓ１４の処理をされる。
【００４９】
そして、ＣＰＵ７２は、図１に示すＲＯＭ７４に記憶された対処プログラム７４ｂを、たとえばＳ１４において算出した上流側触媒温度Ｔｃａｔに基づき、所定周期で繰り返し実行することにより対処処理が実現される。本実施形態においては、対処プログラム７４ｂによって、上流側触媒温度Ｔｃａｔが所定温度以上となる場合に、上流側触媒３４を保護すべく、対処処理が行われる。具体的には、ＣＰＵ７２は、燃料噴射弁２０から噴射する燃料噴射量が減少するように制御する。
【００５０】
次に写像データ７６ａの生成手法について説明する。
図３に、写像データ７６ａを生成するシステムを示す。
図３に示すように、本実施形態では、内燃機関１０のクランク軸２４に、トルクコンバータ６０および変速装置６４を介してダイナモメータ１００を機械的に連結する。そして内燃機関１０を稼働させた際の様々な状態変数がセンサ群１０２によって検出され、検出結果が、写像データ７６ａを生成するコンピュータである適合装置１０４に入力される。なお、センサ群１０２には、写像への入力を生成するための値を検出するセンサであるエアフローメータ８２や、排気温センサ８１、上流側空燃比センサ８３等が含まれる。また、センサ群１０２には、上流側触媒３４の温度を検出する触媒温度センサが含まれる。
【００５１】
図４に、写像データの生成処理の手順を示す。図４に示す処理は、適合装置１０４によって実行される。なお、図４に示す処理は、たとえば、適合装置１０４にＣＰＵおよびＲＯＭを備え、ＲＯＭに記憶されたプログラムをＣＰＵが実行することにより実現すればよい。
【００５２】
図４に示す一連の処理において、適合装置１０４は、まず、センサ群１０２の検出結果に基づき、Ｓ１０の処理において取得するのと同一のデータを訓練データとして取得する（Ｓ２０）。なお、ここで、取得したタイミングに同期して、上述の触媒温度センサの検出値を訓練データのうちの教師データとして取得する。
【００５３】
次に、適合装置１０４は、Ｓ１２の処理の要領で、入力変数ｘ（１）〜ｘ（５ｓｎ＋１）に教師データ以外の訓練データを代入する（Ｓ２２）。そして適合装置１０４は、Ｓ１４の処理の要領で、Ｓ２２の処理によって求めた入力変数ｘ（１）〜ｘ（５ｓｎ＋１）を用いて上流側触媒温度Ｔｃａｔを算出する（Ｓ２４）。そしてＣＰＵ７２は、Ｓ２４の処理によって算出された上流側触媒温度Ｔｃａｔのサンプル数が所定以上であるか否かを判定する（Ｓ２６）。ここで所定以上であるためには、内燃機関１０の運転状態を変化させることによって、回転速度ＮＥおよび充填効率ηによって規定される様々な動作点において上流側触媒温度Ｔｃａｔが算出されていることが要求される。
【００５４】
適合装置１０４は、所定以上ではないと判定する場合（Ｓ２６：ＮＯ）、Ｓ２０の処理に戻る。これに対し、ＣＰＵ７２は、所定以上であると判定する場合（Ｓ２６：ＹＥＳ）、教師データとしての触媒温度センサの検出値とＳ２４の処理によって算出された上流側触媒温度Ｔｃａｔのそれぞれとの差の２乗和を最小化するように、係数ｗ（１）ｊｉ，ｗ（２）ｋｊ，…，ｗ（α）１ｐを更新する（Ｓ２８）。そして適合装置１０４は、係数ｗ（１）ｊｉ，ｗ（２）ｋｊ，…，ｗ（α）１ｐを、学習済みの写像データ７６ａとして記憶する（Ｓ３０）。
【００５５】
次に、本実施形態の作用および効果について説明する。
（１）上記実施形態によれば、Ｓ１０の処理によって取得した取得値が上限ガード値より大きいまたは下限ガード値より小さい場合、すなわち許容範囲外である場合には、ガード処理によって取得した取得値よりも許容範囲に近づけられる。そのため、写像に入力される値が過度に大きかったり小さかったりすることを抑制する。その結果、写像の出力が想定外の値となることを抑制する。
【００５６】
（２）上記実施形態によれば、Ｓ１０の処理によって取得した取得値が、写像が規定される写像データ７６ａの学習された際に入力された訓練データの範囲外である場合に、ガード処理が行われる。そのため、写像に入力される値が、学習された際に入力された訓練データに対して、過度に大きくなることを抑制できる。
【００５７】
（３）上記実施形態によれば、Ｓ１０の処理によって許容範囲外の値が取得された場合には、取得値は、許容範囲内の値であって最もガード処理前に近い値とされる。そのため、ガード処理前の取得値の値を踏襲しつつも、写像の出力が想定外の結果となってしまうことを抑制する。
【００５８】
＜第２の実施形態＞
以下、第２の実施形態について、第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【００５９】
本実施形態では、触媒温度である上流側触媒温度Ｔｃａｔの算出処理を車両の外部で行う。
図５に本実施形態にかかる温度推定システムを示す。なお、図５において、図１に示した部材に対応する部材については、便宜上同一の符号を付している。
【００６０】
図５に示す車両ＶＣ内の制御装置７０は、通信機７９を備えている。通信機７９は車両ＶＣの外部のネットワーク１１０を介してセンター１２０と通信するための機器である。
センター１２０は、複数の車両ＶＣから送信されるデータを解析する。センター１２０は、ＣＰＵ１２２、ＲＯＭ１２４、記憶装置１２６、周辺回路１２７および通信機１２９を備えており、それらがローカルネットワーク１２８によって通信可能とされるものである。ＲＯＭ１２４には、温度推定メインプログラム１２４ａが記憶されており、記憶装置１２６には、写像データ１２６ａが記憶されている。
【００６１】
図６に、図５に示したシステムが実行する処理の手順を示す。図６（ａ）に示す処理は、図５に示すＲＯＭ７４に記憶された温度推定サブプログラム７４ｃをＣＰＵ７２が実行することにより実現される。また、図６（ｂ）に示す処理は、ＲＯＭ１２４に記憶されている温度推定メインプログラム１２４ａをＣＰＵ１２２が実行することにより実現される。以下では、処理の時系列に沿って、図６に示す処理を説明する。
【００６２】
図６（ａ）に示すように、車両ＶＣにおいてＣＰＵ７２は、まず、排気温平均値Ｔｅｘｕａｖｅ、上流側平均値Ａｆｕａｖｅ、吸入空気量Ｇａ、回転速度ＮＥ、および充填効率ηのそれぞれについての、所定期間における時系列データと、前回、図６の処理によって算出された触媒温度である上流側触媒温度Ｔｃａｔの前回値と、を取得する（Ｓ１０）。
【００６３】
次にＣＰＵ７２は、Ｓ１０の処理によって取得したデータを、車両の識別情報を示すデータである車両ＩＤとともに、センター１２０に送信する（Ｓ８０）。
これに対し、センター１２０のＣＰＵ１２２は、図６（ｂ）に示すように、送信されたデータを受信する（Ｓ９０）。次にＣＰＵ１２２は、Ｓ９０において受信した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ９１）。上限ガード値は、取得値の種類毎に設定されており、排気温平均値Ｔｅｘｕａｖｅの上限ガード値、上流側平均値Ａｆｕａｖｅの上限ガード値、吸入空気量Ｇａの上限ガード値、回転速度ＮＥの上限ガード値、および充填効率ηの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置１２６に記憶された写像データ１２６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【００６４】
取得値が上限ガード値以下である場合（Ｓ９１：ＹＥＳ）、ＣＰＵ７２は、Ｓ１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ９２）。下限ガード値は、取得値の種類毎に設定されており、排気温平均値Ｔｅｘｕａｖｅの下限ガード値、上流側平均値Ａｆｕａｖｅの下限ガード値、吸入空気量Ｇａの下限ガード値、回転速度ＮＥの下限ガード値、および充填効率ηの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置１２６に記憶された写像データ１２６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【００６５】
取得値が下限ガード値以上場合（Ｓ９２：ＹＥＳ）、ＣＰＵ１２２は、Ｓ９０の処理によって取得された取得値を写像の入力変数ｘに代入する（Ｓ９３）。ここでＣＰＵ１２２は、入力変数ｘ（１）〜ｘ（５ｓｎ）については、Ｓ１３の処理と同様の値を代入する。入力変数ｘ（５ｓｎ＋１）に上流側触媒温度Ｔｃａｔの前回値を代入する。
【００６６】
そして、ＣＰＵ１２２は、写像データ１２６ａによって規定される写像に、Ｓ９３によって生成した入力変数ｘ（１）〜ｘ（５ｓｎ＋１）を入力して、上流側触媒温度Ｔｃａｔを算出する（Ｓ９４）。ここで、写像データ１２６ａによって規定される写像は、Ｓ１４の処理において用いたものと同様である。
【００６７】
そしてＣＰＵ１２２は、通信機１２９を操作することによって、Ｓ９０の処理によって受信したデータが送信された車両ＶＣに上流側触媒温度Ｔｃａｔに関する信号を送信し（Ｓ９６）、図６（ｂ）に示す一連の処理を一旦終了する。これに対し、図６（ａ）に示すように、ＣＰＵ７２は、上流側触媒温度Ｔｃａｔを受信し（Ｓ８２）、図６（ａ）に示す一連の処理を一旦終了する。
【００６８】
ところで、Ｓ１０において取得した取得値が上限ガード値を超えている場合（Ｓ９１：ＮＯ）、ＣＰＵ１２２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ９７）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後に、上述したＳ９３，Ｓ９４の処理をされる。
【００６９】
また、Ｓ９０において受信した取得値が下限ガード値未満である場合（Ｓ９２：ＮＯ）、ＣＰＵ１２２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ９８）。これにより下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後に、上述したＳ９３〜Ｓ９６，Ｓ８２の処理をされる。
【００７０】
次に、本実施形態における作用および効果を説明する。
（４）上記実施形態では、センター１２０において上流側触媒温度Ｔｃａｔを算出することとしたため、ＣＰＵ７２の演算負荷を軽減できる。
【００７１】
＜第３の実施形態＞
以下、第３の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【００７２】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０で生じる失火を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、内燃機関１０で生じる失火を判定するプログラムが格納されている。
【００７３】
図７に、本実施形態において、制御装置７０が実行する処理の手順を示す。図７に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【００７４】
図７に示す一連の処理において、ＣＰＵ７２は、まず、微小回転時間Ｔ３０（１），Ｔ３０（２），…Ｔ３０（２４）を取得する（Ｓ１１０）。微小回転時間Ｔ３０は、ＣＰＵ７２により、クランク角センサ８０のクランク信号Ｓｃｒに基づき、クランク軸２４が３０°ＣＡ回転するのに要する時間を計時することによって算出される。ここで、微小回転時間Ｔ３０（１），Ｔ３０（２）等、カッコの中の数字が異なる場合、１燃焼サイクルである７２０°ＣＡ内の異なる回転角度間隔であることを示す。すなわち、微小回転時間Ｔ３０（１）〜Ｔ３０（２４）は、７２０°ＣＡの回転角度領域を３０°ＣＡで等分割した各角度間隔における回転時間を示す。次にＣＰＵ７２は、回転速度ＮＥおよび充填効率ηを取得する（Ｓ１１１）。
【００７５】
次にＣＰＵ７２は、Ｓ１１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ１１２）。上限ガード値は、取得値の種類毎に設定されており、微小回転時間Ｔ３０の上限ガード値、回転速度ＮＥの上限ガード値、および充填効率ηの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【００７６】
取得値が上限ガード値以下である場合（Ｓ１１２：ＹＥＳ）、ＣＰＵ７２は、Ｓ１１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ１１３）。下限ガード値は、取得値の種類毎に設定されており、微小回転時間Ｔ３０の下限ガード値、回転速度ＮＥの下限ガード値、および充填効率ηの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【００７７】
取得値が下限ガード値以上である場合（Ｓ１１３：ＹＥＳ）、ＣＰＵ７２は、失火が生じた確率を算出するための写像の入力変数ｘ（１）〜ｘ（２６）に、Ｓ１１０，Ｓ１１２の処理によって取得した値を代入する（Ｓ１１４）。詳しくは、ＣＰＵ７２は、「ｓ＝１〜２４」として、入力変数ｘ（ｓ）に微小回転時間Ｔ３０（ｓ）を代入する。すなわち、入力変数ｘ（１）〜ｘ（２４）は、微小回転時間Ｔ３０の時系列データとなる。また、ＣＰＵ７２は、入力変数ｘ（２５）に回転速度ＮＥを代入し、入力変数ｘ（２６）に充填効率ηを代入する。
【００７８】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（２６）を入力することによって、気筒＃ｉ（ｉ＝１〜４）において失火が生じた確率Ｐ（ｉ）を算出する（Ｓ１１６）。写像データ７６ａは、Ｓ１１０の処理によって取得された微小回転時間Ｔ３０（１）〜Ｔ３０（２４）に対応する期間において気筒＃ｉで失火が生じた確率Ｐ（ｉ）を出力可能な写像を規定するデータである。ここで、確率Ｐ（ｉ）は、入力変数ｘ（１）〜ｘ（２６）に基づき、実際に失火が生じたことのもっともらしさの大小を定量化したものである。ただし、本実施形態においては、気筒＃ｉにおいて失火が生じた確率Ｐ（ｉ）の最大値は、「１」よりも小さく、最小値は「０」よりも大きい値となる。すなわち、本実施形態において、確率Ｐ（ｉ）は、実際に失火が生じたことのもっともらしさの大小を「０」よりも大きく「１」よりも小さい所定領域内で連続的な値として定量化したものである。
【００７９】
本実施形態において、この写像は、中間層が１層のニューラルネットワークと、ニューラルネットワークの出力を規格化することによって、失火が生じた確率Ｐ（１）〜Ｐ（４）の和を「１」とするためのソフトマックス関数とによって構成されている。上記ニューラルネットワークは、入力側係数ｗＦｊｋ（ｊ＝０〜ｎ，ｋ＝０〜２６）と、入力側係数ｗＦｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）を含む。本実施形態では、活性化関数ｈ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。また、上記ニューラルネットワークは、出力側係数ｗＳｉｊ（ｉ＝１〜４，ｊ＝０〜ｎ）と、出力側係数ｗＳｉｊによって規定される線形写像である出力側線形写像の出力のそれぞれを非線形変換する出力側非線形写像としての活性化関数ｆ（ｘ）を含む。本実施形態では、活性化関数ｆ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。なお、値ｎは、中間層の次元を示すものである。本実施形態において、値ｎは、入力変数ｘの次元（ここでは、２６次元）よりも小さい。また、入力側係数ｗＦｊ０は、バイアスパラメータであり、入力変数ｘ（０）を「１」と定義することによって、入力変数ｘ（０）の係数となっている。また、出力側係数ｗＳｉ０は、バイアスパラメータであり、これには「１」が乗算されるものとする。これはたとえば、「ｗＦ００・ｘ（０）＋ｗＦ０１・ｘ（１）＋…」を恒等的に無限大と定義することによって実現できる。
【００８０】
詳しくは、ＣＰＵ７２は、入力側係数ｗＦｊｋ、出力側係数ｗＳｉｊおよび活性化関数ｈ（ｘ），ｆ（ｘ）によって規定されるニューラルネットワークの出力である確率原型ｙ（ｉ）を算出する。確率原型ｙ（ｉ）は、気筒＃ｉにおいて失火が生じた確率と正の相関を有するパラメータである。そして、ＣＰＵ７２は、確率原型ｙ（１）〜ｙ（４）を入力とするソフトマックス関数の出力によって、気筒＃ｉにおいて失火が生じた確率Ｐ（ｉ）を算出する。
【００８１】
次にＣＰＵ７２は、失火が生じた確率Ｐ（１）〜Ｐ（４）のうちの最大値Ｐ（ｍ）が閾値Ｐｔｈ以上であるか否かを判定する（Ｓ１１８）。ここで、変数ｍは、１〜４のいずれかの値をとり、また、閾値Ｐｔｈは、「１／２」以上の値に設定されている。そして、ＣＰＵ７２は、閾値Ｐｔｈ以上であると判定する場合（Ｓ１１８：ＹＥＳ）、確率が最大となった気筒＃ｍの失火の回数Ｎ（ｍ）をインクリメントする（Ｓ１２０）。そしてＣＰＵ７２は、回数Ｎ（１）〜Ｎ（４）の中に、所定回数Ｎｔｈ以上となるものがあるか否かを判定する（Ｓ１２２）。そしてＣＰＵ７２は、所定回数Ｎｔｈ以上となるものが存在すると判定する場合（Ｓ１２２：ＹＥＳ）、特定の気筒＃ｑ（ｑは、１〜４のうちの１つ）で許容範囲を超える頻度の失火が生じているとして、フェールフラグＦに「１」を代入する（Ｓ１２４）。なお、この際、ＣＰＵ７２は、失火が生じた気筒＃ｑの情報を記憶装置７６に記憶するなどして少なくとも当該気筒＃ｑで失火が解消するまで保持することとする。
【００８２】
これに対し、ＣＰＵ７２は、最大値Ｐ（ｍ）が閾値Ｐｔｈ未満であると判定する場合（Ｓ１１８：ＮＯ）、Ｓ１２４の処理または後述するＳ１２８の処理がなされてから所定期間が経過したか否かを判定する（Ｓ１２６）。ここで所定期間は、１燃焼サイクルの期間よりも長く、望ましくは、１燃焼サイクルの１０倍以上の長さを有することが望ましい。
【００８３】
ＣＰＵ７２は、所定期間が経過したと判定する場合（Ｓ１２６：ＹＥＳ）、回数Ｎ（１）〜Ｎ（４）を初期化するとともに、フェールフラグＦを初期化する（Ｓ１２８）。
なお、ＣＰＵ７２は、Ｓ１２４，Ｓ１２８の処理が完了する場合や、Ｓ１２２，Ｓ１２６の処理において否定判定する場合には、図７に示す一連の処理を一旦終了する。
【００８４】
ところで、Ｓ１１０およびＳ１１１において取得した取得値が上限ガード値を超えている場合（Ｓ１１２：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ１３２）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ１１４，Ｓ１１６の処理をされる。
【００８５】
また、Ｓ１１０において取得した取得値が下限ガード値未満である場合（Ｓ１１３：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ１３４）。これにより下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ１１４〜Ｓ１２８の処理をされる。
【００８６】
そして、ＣＰＵ７２は、失火が生じた場合にこれに対処する対処処理を実行する。この対処処理は、フェールフラグＦが「０」から「１」に切り替わることをトリガとして図１に示すＲＯＭ７４に記憶された対処プログラム７４ｂをＣＰＵ７２が実行することにより実現される。本実施形態では、ＣＰＵ７２は、操作部を点火装置２２として、失火が生じた気筒の点火時期を進角させる。
【００８７】
次に写像データ７６ａの生成手法について、第１の実施形態との違いを説明する。
図３に示すセンサ群１０２には、写像への入力を生成するための値を検出するセンサであるエアフローメータ８２やクランク角センサ８０が含まれる。また、ここでは、失火が生じているか否かを確実に把握するために、たとえば筒内圧センサ等をセンサ群１０２に含める。
【００８８】
また写像データ７６ａを生成するために、取得するデータが異なる。本実施形態において、適合装置１０４は、センサ群１０２の検出結果に基づき定まる訓練データとして、微小回転時間Ｔ３０（１）〜Ｔ３０（２４）、回転速度ＮＥ、充填効率η、および失火の真の確率Ｐｔ（ｉ）の組を複数取得する。ここで、真の確率Ｐｔ（ｉ）は、失火が生じた場合に「１」となり、生じていない場合に「０」となるものであり、センサ群１０２のうちの、入力変数ｘ（１）〜ｘ（２６）を定めるパラメータ以外のパラメータを検出値とする筒内圧センサの検出値等に基づき、算出されるものである。もっとも、訓練データを生成するにあたっては、たとえば所定の気筒において意図的に燃料噴射を停止し、失火が生じたときと類似した現象を生成してもよい。その場合であっても、燃料噴射している気筒において失火が生じているか否かを検知するうえで、筒内圧センサ等が用いられる。
【００８９】
次に、本実施形態の作用および効果について説明する。
（５）特に、失火の有無に代表される内燃機関１０の状態を判定する場合には、その判定結果に基づいて内燃機関１０を制御したときに、エンジンストール等が発生する可能性がある。そのため、階層型神経回路モデルを利用して内燃機関の状態を判定するにあたっては、高い信頼性が求められる。上記実施形態によれば、内燃機関１０の状態として、内燃機関１０で生じる失火の有無を判定する際に、ガード処理の技術を適用できる。
【００９０】
＜第４の実施形態＞
以下、第４の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【００９１】
本実施形態では、内燃機関の状態判定装置は、複数の気筒のそれぞれにおける混合気の空燃比を互いに等しい空燃比に制御すべく燃料噴射弁２０を操作した際の実際の空燃比同士のばらつきであるインバランスを判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、複数の気筒間の空燃比同士のばらつきであるインバランスを判定するプログラムが格納されている。
【００９２】
図８に、本実施形態において、制御装置７０が実行する処理の手順を示す。図８に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【００９３】
図８に示す一連の処理において、ＣＰＵ７２は、まず、インバランスの検出処理の実行条件が成立するか否かを判定する（Ｓ２１０）。実行条件には、内燃機関１０の吸気に対する燃料蒸気のパージや排気の再循環が実施されていないことが含まれる。
【００９４】
次に、ＣＰＵ７２は、微小回転時間Ｔ３０（１），Ｔ３０（２），…，Ｔ３０（２４）、上流側平均値Ａｆｕａｖｅ（１），Ａｆｕａｖｅ（２），…，Ａｆｕａｖｅ（２４）、回転速度ＮＥ、充填効率η、および０．５次振幅Ａｍｐｆ／２を取得する（Ｓ２１１）。微小回転時間Ｔ３０は、ＣＰＵ７２により、クランク角センサ８０のクランク信号Ｓｃｒに基づき、クランク軸２４が３０°ＣＡ回転するのに要する時間を計時することによって算出される。
【００９５】
また、ｍ＝１〜２４とすると、上流側平均値Ａｆｕａｖｅ（ｍ）は、上記各微小回転時間Ｔ３０（ｍ）と同一の３０°ＣＡの角度間隔における上流側検出値Ａｆｕの平均値である。
【００９６】
０．５次振幅Ａｍｐｆ／２はクランク軸２４の回転周波数の０．５次成分の強度であり、ＣＰＵ７２により、微小回転時間Ｔ３０の上記時系列データのフーリエ変換によって算出される。インバランス率Ｒｉｖと回転周波数の０．５次成分の大きさである０．５次振幅との間には線形な関係が成り立っているとみなせ、インバランスが存在する場合の回転周波数の振幅は、０．５次成分が特に大きくなる。これは、複数の気筒のいずれか１つでインバランスが生じる場合、１燃焼サイクルに一度、発生トルクにずれが生じるためであると考えられる。
【００９７】
次にＣＰＵ７２は、Ｓ２１１において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ２１２）。上限ガード値は、取得値の種類毎に設定されており、微小回転時間Ｔ３０の上限ガード値、上流側平均値Ａｆｕａｖｅの上限ガード値、回転速度ＮＥの上限ガード値、充填効率ηの上限ガード値、および０．５次振幅Ａｍｐｆ／２の上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【００９８】
取得値が上限ガード値以下である場合（Ｓ２１２：ＹＥＳ）、ＣＰＵ７２は、Ｓ２１１において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ２１３）。下限ガード値は、取得値の種類毎に設定されており、微小回転時間Ｔ３０の下限ガード値、上流側平均値Ａｆｕａｖｅの下限ガード値、回転速度ＮＥの下限ガード値、充填効率ηの下限ガード値、および０．５次振幅Ａｍｐｆ／２の下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【００９９】
取得値が下限ガード値以上である場合（Ｓ２１３：ＹＥＳ）、次にＣＰＵ７２は、インバランス率Ｒｉｖを出力する写像の入力変数ｘ（１）〜ｘ（５１）に、各取得値を入力する（Ｓ２１４）。詳しくは、ＣＰＵ７２は、「ｍ＝１〜２４」として、入力変数ｘ（ｍ）に微小回転時間Ｔ３０（ｍ）を代入し、入力変数（２４＋ｍ）に上流側平均値Ａｆｕａｖｅ（ｍ）を代入し、入力変数ｘ（４９）に回転速度ＮＥを代入し、入力変数ｘ（５０）に充填効率ηを代入し、入力変数ｘ（５１）に０．５次振幅Ａｍｐｆ／２を代入する。
【０１００】
本実施形態において、インバランス率Ｒｉｖは、狙いとする噴射量の燃料が噴射されている気筒において「０」とし、狙いとする噴射量よりも実際の噴射量が多い場合に正の値となり、少ない場合に負の値となる。
【０１０１】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（５１）を入力することによって、気筒＃ｉ（ｉ＝１〜４）のそれぞれのインバランス率Ｒｉｖ（１）〜Ｒｉｖ（４）を算出する（Ｓ２１６）。
【０１０２】
本実施形態において、この写像は、中間層が１層のニューラルネットワークによって構成されている。上記ニューラルネットワークは、入力側係数ｗＦｊｋ（ｊ＝０〜ｎ，ｋ＝０〜５１）と、入力側係数ｗＦｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）を含む。本実施形態では、活性化関数ｈ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。また、上記ニューラルネットワークは、出力側係数ｗＳｉｊ（ｉ＝１〜４，ｊ＝０〜ｎ）と、出力側係数ｗＳｉｊによって規定される線形写像である出力側線形写像の出力のそれぞれを非線形変換する出力側非線形写像としての活性化関数ｆ（ｘ）を含む。本実施形態では、活性化関数ｆ（ｘ）として、ハイパボリックタンジェント「ｔａｎｈ（ｘ）」を例示する。なお、値ｎは、中間層の次元を示すものである。
【０１０３】
ところで、Ｓ２１１において取得した取得値が上限ガード値を超えている場合（Ｓ２１２：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ２１７）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ２１４，Ｓ２１６の処理をされる。
【０１０４】
また、Ｓ２１１において取得した取得値が下限ガード値未満である場合（Ｓ２１２：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ２１８）。これにより下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ２１４，Ｓ２１６の処理をされる。
【０１０５】
そして、ＣＰＵ７２は、図１に示すＲＯＭ７４に記憶された対処プログラム７４ｂを、たとえばＳ２１６において算出したインバランス率Ｒｉｖに基づき、所定周期で繰り返し実行することにより実現される。本実施形態においては、対処プログラム７４ｂによって、インバランス率Ｒｉｖが所定のばらつき範囲外となる場合に、ユーザに修理を促すべく、警告灯９８を操作して、対処処理が行われる。
【０１０６】
次に写像データ７６ａの生成手法について、第１の実施形態との違いを説明する。
写像データ７６ａを生成するために取得するデータが異なる。本実施形態において、適合装置１０４は、センサ群１０２の検出結果に基づき定まる訓練データとして、微小回転時間Ｔ３０（１），Ｔ３０（２），…，Ｔ３０（２４）、上流側平均値Ａｆｕａｖｅ（１），Ａｆｕａｖｅ（２），…，Ａｆｕａｖｅ（２４）、回転速度ＮＥ、充填効率η、および０．５次振幅Ａｍｐｆ／２を取得する。また、予め単体での計測によって、インバランス率Ｒｉｖがゼロとは異なる様々な値をとる複数の燃料噴射弁２０と、インバランス率がゼロである３個の燃料噴射弁２０とを用意し、インバランス率がゼロの燃料噴射弁２０を３個、インバランス率がゼロとは異なる燃料噴射弁２０を１個、内燃機関１０に搭載した状態で行われる。なお、搭載された燃料噴射弁２０のそれぞれのインバランス率Ｒｉｖｔが、教師データとなっている。
【０１０７】
次に、本実施形態の作用および効果について説明する。
（６）上記実施形態によれば、内燃機関１０の状態として、複数の気筒間の空燃比同士のばらつきであるインバランスを判定する際に、ガード処理の技術を適用できる。
【０１０８】
＜第５の実施形態＞
以下、第５の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０１０９】
本実施形態では、内燃機関の状態判定装置は、触媒の劣化を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、触媒の劣化を判定するプログラムが格納されている。
【０１１０】
図９に、本実施形態において、制御装置７０が実行する処理の手順を示す。図９に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０１１１】
図９に示す一連の処理において、ＣＰＵ７２は、まず、上流側平均値Ａｆｕａｖｅ、下流側平均値Ａｆｄａｖｅ、触媒内流量ＣＦ、回転速度ＮＥ、充填効率η、および上流側触媒温度Ｔｃａｔのそれぞれについての、所定期間における時系列データを取得する（Ｓ３１０）。上流側平均値Ａｆｕａｖｅと同様に、下流側平均値Ａｆｄａｖｅは、上記時系列データのサンプリング間隔における下流側検出値Ａｆｄの平均値である。触媒内流量ＣＦは、上流側触媒３４を流動する流体の体積流量であり、回転速度ＮＥおよび充填効率ηに基づき、ＣＰＵ７２により算出される。また、本実施形態では、上流側触媒温度Ｔｃａｔは、回転速度ＮＥおよび充填効率ηに基づいて、ＣＰＵ７２により算出される。
【０１１２】
次にＣＰＵ７２は、Ｓ３１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ３１１）。上限ガード値は、取得値の種類毎に設定されており、上流側平均値Ａｆｕａｖｅの上限ガード値、下流側平均値Ａｆｄａｖｅの上限ガード値、触媒内流量ＣＦの上限ガード値、回転速度ＮＥの上限ガード値、充填効率ηの上限ガード値、および上流側触媒温度Ｔｃａｔの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０１１３】
取得値が上限ガード値以下である場合（Ｓ３１１：ＹＥＳ）、ＣＰＵ７２は、Ｓ３１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ３１２）。下限ガード値は、取得値の種類毎に設定されており、上流側平均値Ａｆｕａｖｅの下限ガード値、下流側平均値Ａｆｄａｖｅの下限ガード値、触媒内流量ＣＦの下限ガード値、回転速度ＮＥの下限ガード値、充填効率ηの下限ガード値、および上流側触媒温度Ｔｃａｔの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０１１４】
取得値が下限ガード値以上である場合（Ｓ３１２：ＹＥＳ）、次にＣＰＵ７２は、上流側触媒３４の劣化度合いを示す変数である劣化度合い変数Ｒｄを出力する写像の入力変数ｘ（１）〜ｘ（６ｓｎ）に、各取得値を代入する（Ｓ３１３）。すなわち、ＣＰＵ７２は、ｍ＝１〜ｓｎとすると、入力変数ｘ（ｍ）に上流側平均値Ａｆｕａｖｅ（ｍ）を代入し、入力変数ｘ（ｓｎ＋ｍ）に下流側平均値Ａｆｄａｖｅ（ｍ）を代入し、入力変数ｘ（２ｓｎ＋ｍ）に触媒内流量ＣＦ（ｍ）を代入し、入力変数ｘ（３ｓｎ＋ｍ）に回転速度ＮＥ（ｍ）を代入する。またＣＰＵ７２は、入力変数ｘ（４ｓｎ＋ｍ）に充填効率η（ｍ）を代入し、入力変数ｘ（５ｓｎ＋ｍ）に上流側触媒温度Ｔｃａｔ（ｍ）を代入する。
【０１１５】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（６ｓｎ）を入力することによって、写像の出力値である劣化度合い変数Ｒｄを算出する（Ｓ３１４）。ここでは、写像の出力値を算出することを、変数を算出するとしているが、これは、変数の値を算出するという意味である。本実施形態では、劣化度合い変数Ｒｄを以下のようにして定量化する。
【０１１６】
Ｒｄ＝１−ＲＲ
ＲＲ＝（上流側触媒３４の所定の温度における実際の酸素吸蔵量の最大値）／（基準となる触媒の所定の温度における酸素吸蔵量の最大値）
これにより、劣化度合い変数Ｒｄは、値が大きいほど劣化度合いが大きいことを表現し、特に、上流側触媒３４の酸素吸蔵量の最大値が基準となる触媒の酸素吸蔵量の最大値に等しい場合に「０」となる。
【０１１７】
本実施形態において、この写像は、中間層が「α」個であって且つ、各中間層の活性化関数ｈ１〜ｈαが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力とゼロとのうちの小さくない方を出力する関数である。たとえば、第１の中間層の各ノードの値は、係数ｗ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜６ｓｎ）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（６ｓｎ）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αとすると、第ｍの中間層の各ノードの値は、係数ｗ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。ここで、ｎ１，ｎ２，…，ｎαは、それぞれ、第１、第２、…、第αの中間層のノード数である。ちなみに、ｗ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【０１１８】
次にＣＰＵ７２は、劣化度合い変数Ｒｄが、規定値ＲｄｔｈＨ以上であるか否かを判定する（Ｓ３１６）。そしてＣＰＵ７２は、規定値ＲｄｔｈＨ以上であると判定する場合（Ｓ３１６：ＹＥＳ）、ユーザに修理を促すべく、図１に示す警告灯９８を操作して外部に通知する報知処理を実行する（Ｓ３１８）。
【０１１９】
これに対し、ＣＰＵ７２は、規定値ＲｄｔｈＨ未満であると判定する場合（Ｓ３１６：ＮＯ）、劣化度合い変数Ｒｄが所定値ＲｄｔｈＬ以上であるか否かを判定する（Ｓ３２０）。ここで、所定値ＲｄｔｈＬは、規定値ＲｄｔｈＨよりも小さい値である。ＣＰＵ７２は、所定値ＲｄｔｈＬ以上であると判定する場合（Ｓ３２０：ＹＥＳ）、フェールフラグＦを「１」とする（Ｓ３２２）。なお、Ｓ３１８の処理がなされる場合には、すでにフェールフラグＦが「１」となっていることを想定している。一方、ＣＰＵ７２は、所定値ＲｄｔｈＬ未満であると判定する場合（Ｓ３２０：ＮＯ）、フェールフラグＦに「０」を代入する（Ｓ３２４）。
【０１２０】
なお、ＣＰＵ７２は、Ｓ３１８，Ｓ３２２，Ｓ３２４の処理が完了する場合には、図９に示す一連の処理を一旦終了する。
ところで、Ｓ３１０において取得した取得値が上限ガード値を超えている場合（Ｓ３１１：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ３３２）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ３１３〜Ｓ３２４の処理をされる。
【０１２１】
また、Ｓ３１０において取得した取得値が下限ガード値未満である場合（Ｓ３１２：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ３３４）。これにより下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ３１３〜Ｓ３２４の処理をされる。
【０１２２】
次に写像データ７６ａの生成手法について、第１の実施形態との違いを説明する。
図３に示すセンサ群１０２には、センサ群１０２には、写像への入力を生成するための値を検出するセンサである上流側空燃比センサ８３や下流側空燃比センサ８４、クランク角センサ８０等が含まれる。
【０１２３】
また、写像データ７６ａを生成するために取得するデータが異なる。本実施形態において、適合装置１０４は、センサ群１０２の検出結果に基づき、Ｓ３１０の処理において取得するのと同一のデータを訓練データとして取得する。なお、この処理は、予め単体で計測された劣化度合い変数Ｒｄが互いに異なる値を有する複数の上流側触媒３４を用意して、それらの１つが選択的に内燃機関１０に搭載された状態で行われており、搭載された上流側触媒３４の劣化度合い変数Ｒｄｔが、教師データとなっている。
【０１２４】
次に、本実施形態の作用および効果について説明する。
（７）上記実施形態によれば、内燃機関１０の状態として、内燃機関の排気通路に設けられた触媒の劣化度合いを判定するうえで、ガード処理の技術を適用できる。
【０１２５】
＜第６の実施形態＞
以下、第６の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０１２６】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０の排気通路２８に設けられた上流側触媒３４の暖機処理における異常の有無を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、触媒の温度を推定するプログラムである温度推定プログラムと、上流側触媒３４の暖機処理における異常の有無を監視する監視プログラムと、が格納されている。
【０１２７】
本実施形態において、制御装置７０は、内燃機関１０の冷間始動時において、回転速度ＮＥおよび充填効率ηから定まる通常時の点火時期に対して所定量だけ点火時期を遅角させ、混合気の燃焼エネルギのうちトルクに寄与することなく熱となる量を増大させる暖機処理を実行する。詳しくは、暖機処理は、始動時の水温ＴＨＷが規定温度以下の場合、冷間始動時であるとして、点火時期を遅角させる処理である。
【０１２８】
図１０に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１０に示す処理は、図１に示すＲＯＭ７４に記憶された温度推定プログラムをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０１２９】
図１０に示す一連の処理において、ＣＰＵ７２は、まず、回転速度ＮＥ、充填効率η、点火時期平均値ａｉｇａｖｅ、吸気位相差平均値ＤＩＮａｖｅ、水温ＴＨＷ、第１温度Ｔｃａｔ１の前回値、第２温度Ｔｃａｔ２の前回値、および第３温度Ｔｃａｔ３の前回値を取得する（Ｓ４１０）。ここで、点火時期平均値ａｉｇａｖｅおよび吸気位相差平均値ＤＩＮａｖｅは、それぞれ、Ｓ４１０の処理の周期における、点火時期ａｉｇの平均値、吸気位相差ＤＩＮの平均値である。また、第１温度Ｔｃａｔ１、第２温度Ｔｃａｔ２、および第３温度Ｔｃａｔ３は、図１１に示すように、上流側触媒３４のうちの上流側から下流側までの領域を３つの部分領域に分割して、上流側から順に第１部分領域Ａ１、第２部分領域Ａ２、および第３部分領域Ａ３とした各部分領域の温度である。なお、前回値とは、図１０に示す一連の処理の前回の実行時に算出された値のことである。吸気位相差ＤＩＮは、クランク角センサ８０のクランク信号Ｓｃｒと吸気側カム角センサ８７の出力信号Ｓｃａとに基づき、クランク軸２４の回転角度に対する吸気側カム軸４８の回転角度の位相差である。
【０１３０】
次にＣＰＵ７２は、Ｓ４１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ４１１）。上限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの上限ガード値、充填効率ηの上限ガード値、点火時期平均値ａｉｇａｖｅの上限ガード値、吸気位相差平均値ＤＩＮａｖｅの上限ガード値、および水温のＴＨＷの上限ガード値が、それぞれ設定されている。また、第１温度Ｔｃａｔ１の上限ガード値、第２温度Ｔｃａｔ２の上限ガード値、および第３温度Ｔｃａｔ３の上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０１３１】
取得値が上限ガード値以下である場合（Ｓ４１１：ＹＥＳ）、ＣＰＵ７２は、Ｓ４１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ４１２）。下限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの下限ガード値、充填効率ηの下限ガード値、点火時期平均値ａｉｇａｖｅの下限ガード値、吸気位相差平均値ＤＩＮａｖｅの下限ガード値、および水温のＴＨＷの下限ガード値が、それぞれ設定されている。また、第１温度Ｔｃａｔ１の下限ガード値、第２温度Ｔｃａｔ２の下限ガード値、および第３温度Ｔｃａｔ３の下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０１３２】
取得値が下限ガード値以上である場合（４１２：ＹＥＳ）、次に、ＣＰＵ７２は、取得値のうち、第２温度Ｔｃａｔ２および第３温度Ｔｃａｔ３以外の変数の値を、第１温度Ｔｃａｔ１を出力する写像の入力変数に代入する（Ｓ４１３）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）に回転速度ＮＥを代入し、入力変数ｘ（２）に充填効率ηを代入し、入力変数ｘ（３）に点火時期平均値ａｉｇａｖｅし、入力変数ｘ（４）に吸気位相差平均値ＤＩＮａｖｅを代入する。また、ＣＰＵ７２は、入力変数ｘ（５）に水温ＴＨＷを代入し、入力変数ｘ（６）に第１温度Ｔｃａｔ１の前回値を代入する。
【０１３３】
次にＣＰＵ７２は、第１温度Ｔｃａｔ１を出力する写像に入力変数ｘ（１）〜ｘ（６）を入力することによって、第１温度Ｔｃａｔ１を算出する（Ｓ４１４）。この写像は、中間層が「αｆ」個であって且つ、各中間層の活性化関数ｈ１〜ｈαｆが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力値とゼロとのうちの小さくない方を出力する関数である。
【０１３４】
たとえば、第１の中間層の各ノードの値は、係数ｗＦ（１）ｊｉ（ｊ＝０〜ｎｆ１，ｉ＝０〜６）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（６）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αｆとすると、第ｍの中間層の各ノードの値は、係数ｗＦ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。ここで、ｎｆ１，ｎｆ２，…，ｎｆαは、それぞれ、第１、第２、…、第αｆの中間層のノード数である。ちなみに、ｗＦ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【０１３５】
ところで、Ｓ４１０において取得した取得値が上限ガード値を超えている場合（Ｓ４１１：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ４３２）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ４１３，Ｓ４１４の処理をされる。
【０１３６】
また、Ｓ４１０において取得した取得値が下限ガード値未満である場合（Ｓ４１２：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ４３４）。これにより、下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ４１３，Ｓ４１４の処理をされる。
【０１３７】
次にＣＰＵ７２は、第２温度Ｔｃａｔ２を出力する写像の入力変数ｘ（１）〜ｘ（７）を生成する（Ｓ４１６）。ここで、入力変数ｘ（１）〜ｘ（５）については、Ｓ４１３の処理において生成したものと同一である。ＣＰＵ７２は、入力変数ｘ（６）に、第２温度Ｔｃａｔ２の前回値を代入するとともに、入力変数ｘ（７）に第１温度平均値Ｔｃａｔ１ａｖｅを代入する。なお、第１温度平均値Ｔｃａｔ１ａｖｅは、Ｓ４１４の今回の処理によって算出された第１温度Ｔｃａｔ１である第１温度Ｔｃａｔ１の今回値を含む第１温度Ｔｃａｔ１の直近の複数のサンプリング値の平均値である。
【０１３８】
次にＣＰＵ７２は、第２温度Ｔｃａｔ２を出力する写像に入力変数ｘ（１）〜ｘ（７）を入力することによって、第２温度Ｔｃａｔ２を算出する（Ｓ４１８）。この写像は、中間層が「αｓ」個であって且つ、各中間層の活性化関数ｈ１〜ｈαｓが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。たとえば、第１の中間層の各ノードの値は、係数ｗＳ（１）ｊｉ（ｊ＝０〜ｎｓ１，ｉ＝０〜７）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（７）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αｓとすると、第ｍの中間層の各ノードの値は、係数ｗＳ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。ここで、ｎ１，ｎ２，…，ｎαｓは、それぞれ、第１、第２、…、第αｓの中間層のノード数である。ちなみに、ｗＳ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【０１３９】
次にＣＰＵ７２は、第３温度Ｔｃａｔ３を出力する写像の入力変数ｘ（１）〜ｘ（７）を生成する（Ｓ４２０）。ここで、入力変数ｘ（１）〜ｘ（５）については、Ｓ４１３の処理において生成したものと同一である。ＣＰＵ７２は、入力変数ｘ（６）に、第３温度Ｔｃａｔ３の前回値を代入し、入力変数ｘ（７）に第２温度平均値Ｔｃａｔ２ａｖｅを代入する。なお、第２温度平均値Ｔｃａｔ２ａｖｅは、Ｓ４１８の今回の処理によって算出された第２温度Ｔｃａｔ２である第２温度Ｔｃａｔ２の今回値を含む第２温度Ｔｃａｔ２の直近の複数のサンプリング値の平均値である。
【０１４０】
次にＣＰＵ７２は、第３温度Ｔｃａｔ３を出力する写像に入力変数ｘ（１）〜ｘ（７）を入力することによって、第３温度Ｔｃａｔ３を算出する（Ｓ４２２）。この写像は、中間層が「αｔ」個であって且つ、各中間層の活性化関数ｈ１〜ｈαｔが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。たとえば、第１の中間層の各ノードの値は、係数ｗＴ（１）ｊｉ（ｊ＝０〜ｎｔ１，ｉ＝０〜７）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（７）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αｔとすると、第ｍの中間層の各ノードの値は、係数ｗＴ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。ここで、ｎ１，ｎ２，…，ｎαｔは、それぞれ、第１、第２、…、第αｔの中間層のノード数である。ちなみに、ｗＴ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【０１４１】
次にＣＰＵ７２は、Ｓ４１８の処理によって今回算出した第２温度Ｔｃａｔ２を、上流側触媒温度Ｔｃａｔに代入し（Ｓ４２４）、この一連の処理を一旦終了する。ちなみに、図１０の処理を最初に実行する場合には、第１温度Ｔｃａｔ１の前回値、第２温度Ｔｃａｔ２の前回値、および第３温度Ｔｃａｔ３の前回値として、予め定めておいたデフォルト値を用いればよい。デフォルト値が実際の温度からずれている場合であっても、図３の処理が繰り返されることにより、第１温度Ｔｃａｔ１、第２温度Ｔｃａｔ２、および第３温度Ｔｃａｔ３はそれぞれ正しい値へと収束する。
【０１４２】
図１２に、本実施形態にかかる上流側触媒３４の暖機処理における異常の有無を監視する処理の手順を示す。図１２に示す処理は、図１に示すＲＯＭ７４に記憶され監視プログラムを、ＣＰＵ７２が、内燃機関１０の冷間始動に伴って、正常または異常の判定がなされるまでたとえば所定周期で繰り返し実行することにより実現される。
【０１４３】
図１２に示す一連の処理において、ＣＰＵ７２は、まず吸入空気量Ｇａを取得する（Ｓ４３０）。そして、ＣＰＵ７２は、Ｓ４３０の処理において取得した吸入空気量Ｇａを積算値ＩｎＧａに加算することによって、積算値ＩｎＧａを更新する（Ｓ４３２）。そして、ＣＰＵ７２は、積算値ＩｎＧａが所定値Ｉｎｔｈ以上であるか否かを判定する（Ｓ４３４）。ここで、所定値Ｉｎｔｈは、上流側触媒３４の暖機制御が正常になされているなら、上流側触媒３４の温度が基準温度Ｔｃａｔｒｅｆに達する許容上限値に設定されている。すなわち、吸入空気量Ｇａが多い場合には少ない場合よりも、燃料の噴射量が多くなり、燃焼室１８において生じる燃焼エネルギも大きくなることから、上流側触媒３４が受ける総熱量も大きくなる。そのため、積算値ＩｎＧａが所定値Ｉｎｔｈに達することを、上流側触媒３４が基準温度Ｔｃａｔｒｅｆに達する許容上限時間とすることができる。なお、基準温度Ｔｃａｔｒｅｆは、上流側触媒３４の活性状態となる温度に応じて設定されている。
【０１４４】
ＣＰＵ７２は、所定値Ｉｎｔｈ以上であると判定する場合（Ｓ４３４：ＹＥＳ）、上流側触媒温度Ｔｃａｔを取得する（Ｓ４３６）。そしてＣＰＵ７２は、上流側触媒温度Ｔｃａｔが、基準温度Ｔｃａｔｒｅｆ未満であるか否かを判定する（Ｓ４３８）。この処理は、上述した暖機処理が正常になされておらず、上流側触媒３４の暖機制御に異常が生じているか否かを判定する処理である。
【０１４５】
そしてＣＰＵ７２は、基準温度Ｔｃａｔｒｅｆ以上であると判定する場合（Ｓ４３８：ＮＯ）、正常判定をする（Ｓ４４０）。これに対しＣＰＵ７２は、基準温度Ｔｃａｔｒｅｆ未満であると判定する場合（Ｓ４３８：ＹＥＳ）、上流側触媒３４の暖機制御に異常があると判定する（Ｓ４４２）。そしてＣＰＵ７２は、ユーザに異常に対処することを促すべく、対処プログラム７４ｂによって、図１に示す警告灯９８を操作する報知処理を実行する（Ｓ４４４）。
【０１４６】
なお、ＣＰＵ７２は、Ｓ４４０，Ｓ４４４の処理が完了する場合や、Ｓ４３４の処理において否定判定する場合には、図１２に示す一連の処理を一旦終了する。
次に写像データ７６ａの生成手法について、第１の実施形態との違いを説明する。
【０１４７】
図３に示すセンサ群１０２には、写像への入力を生成するための値を検出するセンサであるエアフローメータ８２や、クランク角センサ８０、吸気側カム角センサ８７、水温センサ８９等が含まれる。また、センサ群１０２には、上流側触媒３４の第１部分領域Ａ１、第２部分領域Ａ２および第３部分領域Ａ３のそれぞれの温度を検出する温度センサが含まれる。
【０１４８】
写像データ７６ａを生成するために取得するデータが異なる。本実施形態において、適合装置１０４は、センサ群１０２の検出結果に基づき、Ｓ４１０の処理において取得するのと同一のデータを訓練データとして取得するとともに、温度センサの検出値である第１温度Ｔｃａｔ１ｔ、第２温度Ｔｃａｔ２ｔ、および第３温度Ｔｃａｔ３ｔを訓練データのうちの教師データとして取得する。
【０１４９】
次に、本実施形態の作用および効果について説明する。
（８）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０の排気通路２８に設けられた上流側触媒３４の暖機処理における異常の有無を判定する際に、ガード処理の技術を適用できる。
【０１５０】
＜第７の実施形態＞
以下、第７の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０１５１】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０の排気通路２８に設けられた上流側触媒３４の酸素吸蔵量の推定値を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、上流側触媒３４の酸素吸蔵量の推定値を判定するプログラムが格納されている。
【０１５２】
図１３に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１３に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０１５３】
図１３に示す一連の処理において、ＣＰＵ７２は、まず、上流側検出値Ａｆｕ、吸入空気量Ｇａ、アルコール濃度Ｄａ、酸化量Ｑｏｘ、上流側触媒温度Ｔｃａｔ、触媒内流量ＣＦのそれぞれについての、所定期間における時系列データと、同期間における劣化度合いＲｄと、酸素吸蔵量Ｃｏｘの前回値と、を取得する（Ｓ５１０）。以下では、サンプリングタイミングが古い順に、「１，２，…，ｓｎ」として、たとえば上流側検出値Ａｆｕの時系列データを「Ａｆｕ（１）〜Ａｆｕ（ｓｎ）」と記載する。ここで、「ｓｎ」は、各変数の時系列データに含まれるデータ数である。酸素吸蔵量Ｃｏｘの前回値とは、図１３の一連の処理の前回の実行タイミングにおいて算出された値のことであり、図１３においては、「Ｃｏｘ（ｎ−１）」と記載した。ちなみに、図１３の処理を最初に実行する場合、酸素吸蔵量Ｃｏｘは、デフォルト値とすればよい。ここでデフォルト値は、内燃機関１０が長時間停止していたときの想定値とすればよい。酸化量Ｑｏｘは、吸入空気量Ｇａ、上流側検出値Ａｆｕ、上流側触媒温度Ｔｃａｔに基づいて、ＣＰＵ７２により定められる。たとえば、酸化量Ｑｏｘは、上流側触媒温度Ｔｃａｔが高い場合に低い場合よりも大きい値に算出される。
【０１５４】
次に、ＣＰＵ７２は、ｍ＝１〜ｓｎとして、アルコール濃度Ｄａ（ｍ）の燃料の理論空燃比Ａｆｓ（ｍ）を算出する（Ｓ５１２）。ここでＣＰＵ７２は、アルコール濃度Ｄａ（ｍ）が大きい場合に小さい場合よりも、理論空燃比Ａｆｓ（ｍ）を小さい値に算出する。
【０１５５】
次に、ＣＰＵ７２は、燃焼室１８内の混合気の空燃比を理論空燃比とする上で必要な燃料量に対する実際の燃料の過不足量である燃料過不足量Ｑｉの積算値である燃料過不足量積算値ＩｎＱｉを算出する（Ｓ５１４）。本実施形態にかかる燃料過不足量Ｑｉは、正の値の場合に、燃焼室１８内の混合気の空燃比を理論空燃比とする上で必要な燃料量に対する実際の燃料の過剰量を示す。詳しくは、ＣＰＵ７２は、まず、ｍ＝１〜ｓｎとして、燃料過不足量Ｑｉ（ｍ）を、「Ｇａ（ｍ）・［｛１／Ａｆｄ（ｍ）｝−｛１／Ａｆｓ（ｍ）｝］」として算出する。そして、ＣＰＵ７２は、燃料過不足量Ｑｉ（１）〜Ｑｉ（ｓｎ）を合計することによって、燃料過不足量積算値ＩｎＱｉを算出する。
【０１５６】
次にＣＰＵ７２は、酸化量積算値ＩｎＱｏｘ、上流側触媒温度平均値Ｔｃａｔａｖｅおよび触媒内流量平均値ＣＦａｖｅを算出する（Ｓ５１６）。すなわち、ＣＰＵ７２は、酸化量Ｑｏｘ（１）〜Ｑｏｘ（ｓｎ）を合計することによって、酸化量積算値ＩｎＱｏｘを算出する。また、ＣＰＵ７２は、上流側触媒温度Ｔｃａｔ（１）〜Ｔｃａｔ（ｓｎ）の合計値を「ｓｎ」で除算することによって、上流側触媒温度平均値Ｔｃａｔａｖｅを算出する。また、ＣＰＵ７２は、触媒内流量ＣＦ（１）〜ＣＦ（ｓｎ）の合計値を「ｓｎ」で除算することによって、触媒内流量平均値ＣＦａｖｅを算出する。
【０１５７】
次にＣＰＵ７２は、Ｓ５１０〜Ｓ５１６において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ５１７）。上限ガード値は、取得値の種類毎に設定されており、燃料過不足量積算値ＩｎＱｉの上限ガード値、酸化量積算値ＩｎＱｏｘの上限ガード値、上流側触媒温度平均値Ｔｃａｔａｖｅの上限ガード値、触媒内流量平均値ＣＦａｖｅの上限ガード値、劣化度合いＲｄの上限ガード値、および酸素吸蔵量Ｃｏｘの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０１５８】
取得値が上限ガード値以下である場合（Ｓ５１７：ＹＥＳ）、ＣＰＵ７２は、Ｓ５１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ５１８）。下限ガード値は、取得値の種類毎に設定されており、燃料過不足量積算値ＩｎＱｉの下限ガード値、酸化量積算値ＩｎＱｏｘの下限ガード値、上流側触媒温度平均値Ｔｃａｔａｖｅの下限ガード値、触媒内流量平均値ＣＦａｖｅの下限ガード値、劣化度合いＲｄの下限ガード値、および酸素吸蔵量Ｃｏｘの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０１５９】
取得値が下限ガード値以上である場合（Ｓ５１８：ＹＥＳ）、次にＣＰＵ７２は、酸素吸蔵量Ｃｏｘを出力する写像の入力変数ｘ（１）〜ｘ（６）に、Ｓ５１４，Ｓ５１６の処理によって算出した値や、劣化度合いＲｄ、前回値Ｃｏｘ（ｎ−１）を代入する（Ｓ５１９）。すなわちＣＰＵ７２は、入力変数ｘ（１）に燃料過不足量積算値ＩｎＱｉを代入し、入力変数ｘ（２）に酸化量積算値ＩｎＱｏｘを代入し、入力変数ｘ（３）に上流側触媒温度平均値Ｔｃａｔａｖｅを代入する。またＣＰＵ７２は、入力変数ｘ（４）に触媒内流量平均値ＣＦａｖｅを代入し、入力変数ｘ（５）に劣化度合いＲｄを代入し、入力変数ｘ（６）に前回値Ｃｏｘ（ｎ−１）を代入する。
【０１６０】
そして、ＣＰＵ７２は、図１に示す写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（６）を代入することによって、酸素吸蔵量Ｃｏｘを算出する（Ｓ５２０）。
【０１６１】
本実施形態において、この写像は、中間層が１個であって且つ、中間層の活性化関数ｈが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力とゼロとのうちの小さくない方を出力する関数である。ここで、中間層の「ｎ１」個の各ノードの値は、係数ｗ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜６）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（６）を入力した際のｎ１個の出力値のそれぞれを活性化関数ｈに入力することによって生成される。ちなみに、ｗ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義されている。
【０１６２】
なお、ＣＰＵ７２は、Ｓ５２０の処理が完了する場合、図１３に示す一連の処理を一旦終了する。
ところで、Ｓ５１０〜Ｓ５１６において取得した取得値が上限ガード値を超えている場合（Ｓ５１７：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ５２２）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ５１９，Ｓ５２０の処理をされる。
【０１６３】
また、Ｓ５１０〜Ｄ５１６において取得した取得値が下限ガード値未満である場合（Ｓ５１８：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ５３４）。これにより、下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ５１９，Ｓ５２０の処理をされる。
【０１６４】
ちなみに、上記写像データ７６ａは、次のようにして学習すればよい。すなわち、上流側触媒３４の上流側と下流側とに空燃比センサを備え、内燃機関１０を稼働させる。そして、上流側の空燃比センサの検出値である上述の上流側検出値Ａｆｕがリーンである場合、上流側検出値Ａｆｕと吸入空気量Ｇａから上流側触媒３４への酸素流量を算出する一方、上流側触媒３４の下流側の空燃比センサの検出値である上述の下流側検出値Ａｆｄと吸入空気量Ｇａから上流側触媒３４から流出する酸素流量を算出する。これにより、上流側検出値Ａｆｕがリーンである場合における上流側触媒３４の酸素吸蔵量Ｃｏｘの増加量を算出する。一方、上流側検出値Ａｆｕがリッチである場合、上流側検出値Ａｆｕと吸入空気量Ｇａから上流側触媒３４への未燃燃料の流量を算出する一方、下流側検出値Ａｆｄと吸入空気量Ｇａから上流側触媒３４から流出する未燃燃料の流量を算出する。これにより、上流側検出値Ａｆｕがリッチである場合における上流側触媒３４の酸素吸蔵量Ｃｏｘの減少量を算出する。そしてそれら酸素吸蔵量Ｃｏｘの増加量や減少量に基づき酸素吸蔵量Ｃｏｘの教師データを算出する一方、図３の処理と同様の処理によって、酸素吸蔵量Ｃｏｘを算出し、それらの誤差の２乗和を小さくするように、係数ｗ（１）ｊｉ，w（２）１ｊを更新する。
【０１６５】
酸素吸蔵量Ｃｏｘが算出されると、ＣＰＵ７２は、酸素吸蔵量Ｃｏｘに基づき、酸化量Ｑｏｘが算出される酸化量推定処理を実行する。また、ＣＰＵ７２は、酸素吸蔵量Ｃｏｘが所定値以下となる場合、目標値Ａｆ＊を理論空燃比よりもリーンとする期間において、目標値Ａｆ＊を通常時よりもよりリーンとする処理を実行する。
【０１６６】
次に、本実施形態の作用および効果について説明する。
（９）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０の排気通路２８に設けられた上流側触媒３４の酸素吸蔵量の推定値を判定する際に、ガード処理の技術を適用できる。
【０１６７】
＜第８の実施形態＞
以下、第８の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０１６８】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０の排気通路２８に排出された排気中のＰＭを捕集するフィルタに捕集されたＰＭ量の推定値を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、ＰＭ量の推定値を判定するプログラムが格納されている。
【０１６９】
図１４に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１４に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０１７０】
図１４に示す一連の処理において、ＣＰＵ７２は、回転速度ＮＥ、充填効率η、点火時期平均値ａｉｇａｖｅ、燃料過不足量平均値Ｑｉａｖｅ、始動時積算空気量ＩｎＧａ１、始動後積算空気量ＩｎＧａ２、水温ＴＨＷ，吸気温ＴＯ、上流側触媒温度Ｔｃａｔ、上流側平均値Ａｆｕａｖｅ、およびＰＭ量であるＰＭ堆積量ＤＰＭを取得する（Ｓ６１０）。なお、ここで取得するＰＭ堆積量ＤＰＭは、図１４の一連の処理の前回の実行タイミングにおいて算出された前回値である。なお、図１４の処理が一度も実行されていないときのＰＭ堆積量ＤＰＭの初期値は、ゼロとなっている。点火時期平均値ａｉｇａｖｅ、燃料過不足量平均値Ｑｉａｖｅ、および上流側平均値Ａｆｕａｖｅは、それぞれ、Ｓ６１０の処理の周期における、点火時期ａｉｇの平均値、燃料過不足量Ｑｉの平均値、および上流側検出値Ａｆｕの平均値である。たとえば、ＣＰＵ７２は、Ｓ６１０の処理の周期に、上流側検出値Ａｆｕを複数回サンプリングし、それらの平均値を算出し、上流側平均値Ａｆｕａｖｅとする。また、燃料過不足量Ｑｉは、ベース噴射量Ｑｂに対する要求噴射量Ｑｄの燃料過不足量Ｑｉの平均値であり、負の値をとりうる。燃料過不足量Ｑｉは、混合気の空燃比を理論空燃比とする上で必要な燃料量に対する過不足分を示す。
【０１７１】
また、始動時積算空気量ＩｎＧａ１は、始動時において吸入される空気量の積算値である。また、始動後積算空気量ＩｎＧａ２は、始動後における吸入空気量Ｇａの積算値である。
【０１７２】
次にＣＰＵ７２は、Ｓ６１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ６１１）。上限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの上限ガード値、充填効率ηの上限ガード値、点火時期平均値ａｉｇａｖｅの上限ガード値、燃料過不足量平均値Ｑｉａｖｅの上限ガード値、始動時積算空気量ＩｎＧａ１の上限ガード値、始動後積算空気量ＩｎＧａ２の上限ガード値、水温ＴＨＷの上限ガード値、吸気温ＴＯの上限ガード値、上流側触媒温度Ｔｃａｔの上限ガード値、上流側平均値Ａｆｕａｖｅの上限ガード値、およびＰＭ堆積量ＤＰＭの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０１７３】
取得値が上限ガード値以下である場合（Ｓ６１１：ＹＥＳ）、ＣＰＵ７２は、Ｓ６１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ６１２）。下限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの上限ガード値、充填効率ηの下限ガード値、点火時期平均値ａｉｇａｖｅの下限ガード値、燃料過不足量平均値Ｑｉａｖｅの下限ガード値、始動時積算空気量ＩｎＧａ１の下限ガード値、始動後積算空気量ＩｎＧａ２の下限ガード値、水温ＴＨＷの下限ガード値、吸気温ＴＯの下限ガード値、上流側触媒温度Ｔｃａｔの下限ガード値、上流側平均値Ａｆｕａｖｅの下限ガード値、およびＰＭ堆積量ＤＰＭの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０１７４】
取得値が下限ガード値以上である場合（Ｓ６１２：ＹＥＳ）、次にＣＰＵ７２は、Ｓ６１０の処理において取得したいくつかの変数を、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像であって排気通路２８へのＰＭの排出量であるＰＭ排出量ＱＰＭを出力する写像の入力変数とする（Ｓ６１３）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）に回転速度ＮＥを代入し、入力変数ｘ（２）に充填効率ηを代入し、入力変数ｘ（３）に点火時期平均値ａｉｇａｖｅを代入し、入力変数ｘ（４）に燃料過不足量平均値Ｑｉａｖｅを代入し、入力変数ｘ（５）に始動時積算空気量ＩｎＧａ１を代入し、入力変数ｘ（６）に始動後積算空気量ＩｎＧａ２を代入する。また、ＣＰＵ７２は、入力変数ｘ（７）に水温ＴＨＷを代入し、入力変数ｘ（８）に吸気温ＴＯを代入する。
【０１７５】
次にＣＰＵ７２は、ＰＭ排出量ＱＰＭを出力する写像に入力変数ｘ（１）〜ｘ（８）を入力することによって、ＰＭ排出量ＱＰＭを算出する（Ｓ６１４）。本実施形態にかかる写像は、中間層が１層であって且つ、中間層の活性化関数ｈ１が、ハイパボリックタンジェントであり、出力層の活性化関数ｈ２がＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力とゼロとのうちの小さくない方を出力する関数である。
【０１７６】
ここで、中間層の各ノードの値は、係数ｗＦ（１）ｊｋ（ｊ＝１〜ｎｈ，ｋ＝０〜８）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（８）を入力した際の「ｎｈ」次元の出力値のそれぞれを活性化関数ｈ１に入力することによって生成される。ちなみに、ｗＦ（１）ｊ０は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。また、出力層は、係数ｗＦ（２）１ｊによって規定される線形写像に中間層のノードの値を入力した際の出力を活性化関数ｈ２に入力することによって生成される。ただし、係数ｗＦ（２）１０は、バイアスパラメータである。
【０１７７】
次にＣＰＵ７２は、Ｓ６１０の処理において取得したＰＭ堆積量ＤＰＭの前回値に基づき、排気通路２８に排出された排気中のＰＭのうちのフィルタである上流側触媒３４において捕集される割合である捕集率ＲＰＭを算出する（Ｓ６１６）。詳しくは、ＰＭ堆積量ＤＰＭの前回値を入力変数とし、捕集率ＲＰＭを出力変数とするマップデータが予めＲＯＭ７４に記憶された状態で、ＣＰＵ７２により捕集率ＲＰＭをマップ演算する。
【０１７８】
次にＣＰＵ７２は、Ｓ６１０の処理において取得したいくつかの変数を、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像であって上流側触媒３４によるＰＭの酸化量であるＰＭ酸化量ＯＰＭを出力する写像の入力変数とする（Ｓ６１８）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）に回転速度ＮＥを代入し、入力変数ｘ（２）に充填効率ηを代入し、入力変数ｘ（３）に上流側触媒温度Ｔｃａｔを代入し、入力変数ｘ（４）に上流側平均値Ａｆｕａｖｅを代入し、入力変数ｘ（５）にＰＭ堆積量ＤＰＭの前回値を代入する。
【０１７９】
次にＣＰＵ７２は、ＰＭ酸化量ＯＰＭを出力する写像にＳ６１８の処理によって生成した入力変数ｘ（１）〜ｘ（５）を入力することによって、ＰＭ酸化量ＯＰＭを算出する（Ｓ６２０）。本実施形態にかかる写像は、中間層が１層であって且つ、中間層の活性化関数ｇ１が、ハイパボリックタンジェントであり、出力層の活性化関数ｇ２がＲｅＬＵであるニューラルネットワークによって構成されている。
【０１８０】
ここで、中間層の各ノードの値は、係数ｗＳ（１）ｊｋ（ｊ＝１〜ｎｇ，ｋ＝０〜５）によって規定される線形写像にＳ６１８の処理による入力変数ｘ（１）〜ｘ（５）を入力した際の「ｎｇ」次元の出力値のそれぞれを活性化関数ｇ１に入力することによって生成される。ちなみに、ｗＳ（１）ｊ０は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。また、出力層は、係数ｗＳ（２）１ｊによって規定される線形写像に中間層のノードの値を入力した際の出力を活性化関数ｇ２に入力することによって生成される。なお、係数ｗＳ（２）１０は、バイアスパラメータである。
【０１８１】
次に、ＣＰＵ７２は、ＰＭ排出量ＱＰＭに捕集率ＲＰＭを乗算した値からＰＭ酸化量ＯＰＭを減算した値を、Ｓ６１０の処理によって取得したＰＭ堆積量ＤＰＭの前回値に加算することによって、ＰＭ堆積量ＤＰＭを更新する（Ｓ６２２）。そしてＣＰＵ７２は、ＰＭ堆積量ＤＰＭが所定量ＤＰＭｔｈＨ以上であるか否かを判定する（Ｓ６２４）。ＣＰＵ７２は、所定量ＤＰＭｔｈＨ以上であると判定する場合（Ｓ６２４：ＹＥＳ）、再生フラグＦＲに「１」を代入する（Ｓ６２６）。ちなみに、再生フラグＦＲの初期値は、「０」とされている。
【０１８２】
なお、ＣＰＵ７２は、Ｓ６２６の処理が完了する場合や、Ｓ６２４の処理において否定判定する場合には、図１４に示す一連の処理を一旦終了する。
ところで、Ｓ６１０において取得した取得値が上限ガード値を超えている場合（Ｓ６１１：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ６３０）。これにより、上限ガード値を超えた取得値は、上限ガード値の値として設定され、その後上述したＳ６１３〜Ｓ６２６の処理をされる。
【０１８３】
また、Ｓ６１０において取得した取得値が下限ガード値未満である場合（Ｓ６１２：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ６３２）。これにより、下限ガード値未満の取得値は、下限ガード値の値として設定され、その後上述したＳ６１３〜Ｓ６２６の処理をされる。
【０１８４】
次に写像データ７６ａの生成手法について、第１の実施形態との違いを説明する。
図３に示すセンサ群１０２には、排気通路２８に排出されるＰＭの流量を検知するＰＭセンサが含まれる。
【０１８５】
また、写像データ７６ａを生成するために取得するデータが異なる。本実施形態において、適合装置１０４は、センサ群１０２の検出結果に基づき、Ｓ６１０の処理において取得するのと同一のデータを訓練データとして取得するとともに、ＰＭセンサによって検出されるＰＭ排出量ＱＰＭｔを訓練データのうちの教師データとして取得する。
【０１８６】
次に、本実施形態の作用および効果について説明する。
（１０）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０の排気通路２８に排出された排気中のＰＭを捕集するフィルタに捕集されたＰＭ量の推定値を判定する際に、ガード処理の技術を適用できる。
【０１８７】
＜第９の実施形態＞
以下、第９の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０１８８】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０の排気通路２８に設けられた上流側空燃比センサ８３の異常の有無を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、内燃機関１０の排気通路２８に設けられた上流側空燃比センサ８３の異常の有無を判定するプログラムが格納されている。
【０１８９】
ＣＰＵ７２は、ベース噴射量算出処理を実行する。ベース噴射量算出処理は、充填効率ηに基づき、燃焼室１８内の混合気の空燃比を目標空燃比とするための燃料量のベース値であるベース噴射量Ｑｂを算出する処理である。詳しくは、ベース噴射量算出処理は、たとえば充填効率ηが百分率で表現される場合、空燃比を目標空燃比とするための充填効率ηの１％当たりの燃料量ＱＴＨに、充填効率ηを乗算することによりベース噴射量Ｑｂを算出する処理とすればよい。ベース噴射量Ｑｂは、燃焼室１８内に充填される空気量に基づき、空燃比を目標空燃比に制御するために算出された燃料量である。ちなみに、本実施形態では、目標空燃比として理論空燃比を例示する。
【０１９０】
ＣＰＵ７２は、メインフィードバック処理を実行する。メインフィードバック処理は、フィードバック制御量である上流側検出値Ａｆｕを目標値Ａｆ＊にフィードバック制御するための操作量である補正比率δに「１」を加算したフィードバック補正係数ＫＡＦを算出する処理である。フィードバック補正係数ＫＡＦは、ベース噴射量Ｑｂの補正係数である。ここで、補正比率δが「０」である場合、ベース噴射量Ｑｂの補正は行われない。また、補正比率δが「０」よりも大きい場合、ベース噴射量Ｑｂを増量補正し、補正比率δが「０」よりも小さい場合、ベース噴射量Ｑｂを減量補正する。本実施形態では、目標値Ａｆ＊と上流側検出値Ａｆｕとの差を入力とする比例要素および微分要素の各出力値の和と同差に応じた値の積算値を出力する積分要素の出力値との和を補正比率δとする。
【０１９１】
ＣＰＵ７２は、サブフィードバック処理を実行する。サブフィードバック処理は、下流側検出値Ａｆｄが、理論空燃比Ａｆｓに対して所定量εｒ以上リッチとなる場合、目標値Ａｆ＊を理論空燃比Ａｆｓに対して規定量δｌだけリーンとする処理である。また、サブフィードバック処理は、下流側検出値Ａｆｄが、理論空燃比Ａｆｓに対して所定量εｌ以上リーンとなる場合、目標値Ａｆ＊を理論空燃比Ａｆｓに対して規定量δｒだけリッチとする処理である。
【０１９２】
図１５に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１５に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０１９３】
図１５に示す一連の処理において、ＣＰＵ７２は、まず、開始フラグＦｓｔが「１」であるか否かを判定する（Ｓ７１０）。開始フラグＦｓｔは、「１」である場合に、上流側空燃比センサ８３の異常の有無の判定のための入力変数に関するセンサ検出値のサンプリングを開始する旨を示し、「０」である場合にそうではない場合を示す。
【０１９４】
ＣＰＵ７２は、開始フラグＦｓｔが「０」であると判定する場合（Ｓ７１０：ＮＯ）、目標値Ａｆ＊の今回値Ａｆ＊（ｎ）から前回値Ａｆ＊（ｎ−１）を減算した値の絶対値が、所定値ΔＡｆｔｈ以上であるか否かを判定する（Ｓ７１２）。ここで、今回値Ａｆ＊（ｎ）とは、図１５に示す一連の処理の今回の実行タイミングにおける目標値Ａｆ＊のことであり、前回値Ａｆ＊（ｎ−１）とは、図１５に示す一連の処理の前回の実行タイミングにおける目標値Ａｆ＊のことである。また、所定値ΔＡｆｔｈは、上記規定量δｌと規定量δｒとの和以下の値とされている。
【０１９５】
ＣＰＵ７２は、上記目標値Ａｆ＊が、目標値Ａｆ＊を理論空燃比Ａｆｓに対して規定量δｌだけリーンである状態と理論空燃比Ａｆｓに対して規定量δｒだけリッチである状態との２つの状態のいずれか一方から他方に切り替わる時点等において、所定値ΔＡｆｔｈ以上と判定し（Ｓ７１２：ＹＥＳ）、開始フラグＦｓｔに「１」を代入する（Ｓ７１４）。
【０１９６】
これに対し、ＣＰＵ７２は、開始フラグＦｓｔが「１」であると判定する場合（Ｓ７１０：ＹＥＳ）、回転速度ＮＥおよび充填効率ηによって規定される内燃機関１０の動作点が所定範囲内にあるか否かを判定する（Ｓ７１６）。この処理は、上流側空燃比センサ８３の異常の有無の判定処理の実行条件の１つが成立するか否かを判定する処理である。
【０１９７】
ＣＰＵ７２は、所定範囲内であると判定する場合（Ｓ７１６：ＹＥＳ）、要求噴射量Ｑｄ、および上流側検出値Ａｆｕを取得する（Ｓ７１８）。なお、本実施形態では、Ｓ７１８の処理の実行タイミング間の時間間隔である実行周期の間に、ＣＰＵ７２により上流側検出値Ａｆｕが複数回サンプリングされるものとする。そして、ＣＰＵ７２は、Ｓ７１８の処理において、上流側検出値Ａｆｕについては、前回のＳ７１８の処理の実行タイミングから今回のＳ７１８の処理の実行タイミングまでの期間においてサンプリングされた複数の上流側検出値Ａｆｕを取得することとする。なお、ＣＰＵ７２は、Ｓ７１８の処理において、要求噴射量Ｑｄについては、最新の値を１つ取得する。
【０１９８】
そしてＣＰＵ７２は、燃料過不足量Ｑｉの「ｓｎ」個のサンプリング値と、差変数ΔＡｆｕの「ｓｎ」個のサンプリング値と、時間差分最大値ｄＡｆｕｍａｘの「ｓｎ」個のサンプリング値との取得が完了したか否かを判定する（Ｓ７２０）。ここで、燃料過不足量Ｑｉは、燃焼室１８内の混合気の空燃比を理論空燃比とする上で必要な燃料量に対する実際の噴射量の過剰量であり、本実施形態では、「Ｑｄ−Ｑｂ・（１＋ＬＡＦ＋Ｄｐ）」としている。なお、燃料過不足量Ｑｉは負の値ともなりえ、その場合、燃料過不足量Ｑｉの絶対値が、必要な燃料量に対する実際の噴射量の不足量を示す。燃料過不足量Ｑｉは、Ｓ７１８の処理が一度実行される都度、算出される。すなわち、Ｓ７１８の処理の実行周期に一度、サンプリングされる。
【０１９９】
また、差変数ΔＡｆｕは、Ｓ７１８の処理の実行の一周期における上流側検出値Ａｆｕの極大値と極小値との差である。また、時間差分最大値ｄＡｆｕｍａｘは、Ｓ７１８の処理の実行の一周期における上流側検出値Ａｆｕの時系列データのうちの隣接するもの同士の差によって算出される時間差分値ｄＡｆｕの最大値である。差変数ΔＡｆｕおよび時間差分最大値ｄＡｆｕｍａｘは、Ｓ７１８の処理が一度実行される都度、算出される。すなわち、Ｓ７１８の処理の実行周期に一度、サンプリングされる。これにより、「ｍ＝１〜ｓｎ」として、たとえば差変数ΔＡｆｕ（ｍ）は、差変数ΔＡｆｕの「ｓｎ」個の時系列データを構成する各差変数ΔＡｆｕのサンプリング周期における複数の上流側検出値Ａｆｕの極大値および極小値の差となっている。
【０２００】
ＣＰＵ７２は、Ｓ７１６の処理において肯定判定されている期間内にＳ７１８の処理が「ｓｎ」回なされる場合、各変数の値の「ｓｎ」個によって構成される時系列データの取得が完了したと判定する（Ｓ７２０：ＹＥＳ）。なお、ＣＰＵ７２は、後述するＳ７２６の処理がなされる場合、各変数の「ｓｎ」個の値を全て消去し、取得されている各変数の値の個数を初期化する。
【０２０１】
次にＣＰＵ７２は、Ｓ７２０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ７２１）。上限ガード値は、取得値の種類毎に設定されており、燃料過不足量Ｑｉの上限ガード値、差変数ΔＡｆｕの上限ガード値、および時間差分最大値ｄＡｆｕｍａｘの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０２０２】
取得値が上限ガード値以下である場合（Ｓ７２１：ＹＥＳ）、ＣＰＵ７２は、Ｓ７２０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ７２２２）。下限ガード値は、取得値の種類毎に設定されており、燃料過不足量Ｑｉの下限ガード値、差変数ΔＡｆｕの下限ガード値、および時間差分最大値ｄＡｆｕｍａｘの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０２０３】
取得値が下限ガード値以上である場合（Ｓ７２２：ＹＥＳ）、ＣＰＵ７２は、上流側空燃比センサ８３の異常の有無を示す変数である異常判定変数ＰＪ（１），ＰＪ（２）を出力する写像の入力変数ｘ（１）〜ｘ（３ｓｎ）に、Ｓ７２０の処理によって取得が完了したと判定した変数の値を代入する（Ｓ７２３）。すなわち、ＣＰＵ７２は、ｍ＝１〜ｓｎとすると、入力変数ｘ（ｍ）に燃料過不足量Ｑｉ（ｍ）を代入し、入力変数ｘ（ｓｎ＋ｍ）に差変数ΔＡｆｕ（ｍ）を代入し、入力変数ｘ（２ｓｎ＋ｍ）に時間差分最大値ｄＡｆｕｍａｘ（ｍ）を代入する。なお、異常判定変数ＰＪ（１）は、異常が生じている可能性が高い場合に低い場合よりも大きい値となる変数であり、異常判定変数ＰＪ（２）は、異常が生じてない可能性が高い場合に低い場合よりも大きい値となる変数である。
【０２０４】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（３ｓｎ）を入力することによって、写像の出力値である異常判定変数ＰＪ（１），ＰＪ（２）の値を算出する（Ｓ７２４）。
【０２０５】
本実施形態において、この写像は、中間層が１層のニューラルネットワークによって構成されている。上記ニューラルネットワークは、入力側係数ｗＦｊｋ（ｊ＝０〜ｎ，ｋ＝０〜３ｓｎ）と、入力側係数ｗＦｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）を含む。本実施形態では、活性化関数ｈ（ｘ）として、ＲｅＬＵを例示する。なお、ＲｅＬＵは、入力と「０」とのうちの小さくない方を出力する関数である。ちなみに、ｗＦｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義されている。
【０２０６】
また、上記ニューラルネットワークは、出力側係数ｗＳｉｊ（ｉ＝１〜２，ｊ＝０〜ｎ）と、出力側係数ｗＳｉｊによって規定される線形写像である出力側線形写像の出力である確率原型ｙ（１），ｙ（２）のそれぞれを入力として、それぞれ、異常判定変数ＰＪ（１），ＰＪ（２）を出力するソフトマックス関数を含む。
【０２０７】
次に、ＣＰＵ７２は、異常判定変数ＰＪ（１）の値が異常判定変数ＰＪ（２）の値よりも大きいか否かを判定する（Ｓ７２６）。この処理は、上流側空燃比センサ８３に異常があるか否かを判定する処理である。そしてＣＰＵ７２は、異常判定変数ＰＪ（２）の値よりも大きいと判定する場合（Ｓ７２６：ＹＥＳ）、異常であると判定する（Ｓ７２８）。そしてＣＰＵ７２は、ユーザに修理を促すべく、図１に示す警告灯９８を操作する処理である、報知処理を実行する（Ｓ７３０）。
【０２０８】
ＣＰＵ７２は、Ｓ７３０の処理が完了する場合や、Ｓ７１６，Ｓ７２６の処理において否定判定する場合には、開始フラグＦｓｔに「０」を代入する（Ｓ７３２）。なおＣＰＵ７２は、Ｓ７１４，Ｓ７３２の処理が完了する場合や、Ｓ７１２，Ｓ７２０の処理において否定判定する場合には、図１５に示す一連の処理を一旦終了する。
【０２０９】
ところで、Ｓ７２０において取得した取得値が上限ガード値を超えている場合（Ｓ７２１：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ７４０）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ７２３〜Ｓ７３２の処理をされる。
【０２１０】
また、Ｓ７２０において取得した取得値が下限ガード値未満である場合（Ｓ７２２：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ７４２）。これにより、下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ７２３〜Ｓ７３２の処理をされる。
【０２１１】
なお、写像データ７６ａの入力側係数ｗＦｊｋや出力側係数ｗＳｉｊは、たとえば予め応答性が低下していることが分かっている上流側空燃比センサ８３と正常な上流側空燃比センサ８３とのそれぞれを用いて内燃機関１０を稼働させたときのＳ７２２の処理で用いた各変数を訓練データとして学習されたものである。
【０２１２】
次に、本実施形態の作用および効果について説明する。
（１１）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０の排気通路２８に設けられた上流側空燃比センサ８３の異常の有無を判定する際に、ガード処理の技術を適用できる。
【０２１３】
＜第１０の実施形態＞
以下、第１０の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０２１４】
本実施形態では、内燃機関の状態判定装置は、ＥＧＲバルブ３３の応答遅れの異常の有無を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、ＥＧＲバルブ３３の応答遅れの異常の有無を判定するプログラムが格納されている。
【０２１５】
ＣＰＵ７２は、回転速度ＮＥおよび充填効率ηに基づいて、ＥＧＲ通路３２を介して吸気通路１２供給するＥＧＲの目標割合である目標ＥＧＲ率ＲＡＯを算出する。そして、ＣＰＵ７２は、目標ＥＧＲ率ＲＡＯに基づいて、ＥＧＲ通路３２の流路断面積を調整するＥＧＲバルブ３３の開度を操作する。本実施形態において、目標ＥＧＲ率ＲＡＯは、予め定められたマップデータによって算出される。
【０２１６】
なお、マップデータとは、入力変数の離散的な値と、入力変数の値のそれぞれに対応する出力変数の値と、の組データである。またマップ演算は、たとえば、入力変数の値がマップデータの入力変数の値のいずれかに一致する場合、対応するマップデータの出力変数の値を演算結果とするのに対し、一致しない場合、マップデータに含まれる複数の出力変数の値の補間によって得られる値を演算結果とする処理とすればよい。
【０２１７】
図１６に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１６に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０２１８】
図１６に示す一連の処理において、ＣＰＵ７２は、まず、回転速度ＮＥおよび充填効率ηを取得する（Ｓ８１０）。
次に、ＣＰＵ７２は、上述したマップデータに基づいて、回転速度ＮＥおよび充填効率ηに基づいて、目標ＥＧＲ率ＲＡＯを算出する（Ｓ８１２）。
【０２１９】
次に、ＣＰＵ７２は、ＥＧＲ通路３２およびＥＧＲバルブ３３の異常の判定処理の実行条件が成立するか否かを判定する（Ｓ８１４）。具体的には、今回算出した目標ＥＧＲ率ＲＡＯと、前回算出した目標ＥＧＲ率ＲＡＯと、の差によって算出される目標ＥＧＲ率ＲＡＯの上昇変化量が、予め定められた閾値よりも大きいときに、実行条件が成立する。
【０２２０】
実行条件が成立している場合（Ｓ８１４：ＹＥＳ）、ＣＰＵ７２は、吸気圧Ｐｉｎ、吸入空気量Ｇａ、大気圧Ｐａ、吸気温ＴＯ、水温ＴＨＷを取得する（Ｓ８１６）。
次にＣＰＵ７２は、Ｓ８１２およびＳ８１６において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ８１８）。上限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの上限ガード値、充填効率ηの上限ガード値、および吸気圧Ｐｉｎの上限ガード値、吸入空気量Ｇａの上限ガード値、大気圧Ｐａの上限ガード値、吸気温ＴＯの上限ガード値、および水温ＴＨＷの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０２２１】
取得値が上限ガード値以下である場合（Ｓ８１８：ＹＥＳ）、ＣＰＵ７２は、Ｓ８１２およびＳ８１６において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ８２０）。下限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの下限ガード値、充填効率ηの下限ガード値、および吸気圧Ｐｉｎの下限ガード値、吸入空気量Ｇａの下限ガード値、大気圧Ｐａの下限ガード値、吸気温ＴＯの下限ガード値、および水温ＴＨＷの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０２２２】
取得値が下限ガード値以上である場合（Ｓ８２０：ＹＥＳ）、ＣＰＵ７２は、目標ＥＧＲ率ＲＡＯの推定値ｙｒを出力する写像の入力変数に、各取得値の値代入する（Ｓ８２２）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）に回転速度ＮＥを代入し、入力変数ｘ（２）に充填効率ηを代入し、入力変数ｘ（３）に吸気圧Ｐｉｎを代入し、入力変数ｘ（４）に吸入空気量Ｇａを代入する。また、ＣＰＵ７２は、入力変数ｘ（５）に大気圧Ｐａを代入し、入力変数ｘ（６）に吸気温ＴＯを代入し、入力変数ｘ（７）に水温ＴＨＷを代入する。
【０２２３】
次にＣＰＵ７２は、目標ＥＧＲ率ＲＡＯの推定値ｙｒを出力する写像に入力変数ｘ（１）〜ｘ（７）を入力することによって、目標ＥＧＲ率ＲＡＯの推定値ｙｒを算出する（Ｓ８２４）。この写像は、中間層が「αｆ」個であって且つ、各中間層の活性化関数ｈ１〜ｈαｆが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力値とゼロとのうちの小さくない方を出力する関数である。
【０２２４】
たとえば、第１の中間層の各ノードの値は、係数ｗＦ（１）ｊｉ（ｊ＝０〜ｎｆ１，ｉ＝０〜７）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（７）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αｆとすると、第ｍの中間層の各ノードの値は、係数ｗＦ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。ここで、ｎｆ１，ｎｆ２，…，ｎｆαは、それぞれ、第１、第２、…、第αｆの中間層のノード数である。ちなみに、ｗＦ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【０２２５】
次に、ＣＰＵ７２は、マップデータによって算出した目標ＥＧＲ率ＲＡＯと、写像によって出力された目標ＥＧＲ率ＲＡＯの推定値ｙｒとの差であるΔＥＧＲを算出する（Ｓ８２６）。
【０２２６】
次に、ＣＰＵ７２は、目標ＥＧＲ率ＲＡＯの上昇開始時刻から現在の時刻までの各時刻におけるΔＥＧＲの積算値ΣΔＥＧＲが予め設定された閾値ＩＸより大きいか否かを判断する（Ｓ８２６）。
【０２２７】
積算値ΣΔＥＧＲが閾値ＩＸより大きい場合（Ｓ８２８：ＹＥＳ）、ＣＰＵ７２は、図１に示す対処プログラム７４ｂによって、対処処理を実行する。具体的には、警告灯９８を点灯させる（Ｓ８３０）。
【０２２８】
ＣＰＵ７２は、Ｓ８３０の処理が完了する場合や、Ｓ８１４，Ｓ８２８の処理において否定判定する場合には、図１６に示す一連の処理を一旦終了する。
ところで、Ｓ８１２およびＳ８１６において取得した取得値が上限ガード値を超えている場合（Ｓ８１８：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ８３２）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ８２２〜Ｓ８３０の処理をされる。
【０２２９】
また、Ｓ８１２およびＳ８１６において取得した取得値が下限ガード値未満である場合（Ｓ８２０：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ８３４）。これにより、下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ８２２〜Ｓ８３０の処理をされる。
【０２３０】
なお、本実施形態の写像データ７６ａの入力側係数ｗＦｊｋや出力側係数ｗＳｉｊは、たとえばマップデータが算出した目標ＥＧＲ率ＲＡＯを教師データ、Ｓ８１２およびＳ８１６において取得した取得値を訓練データとして学習されたものである。
【０２３１】
次に、本実施形態の作用および効果について説明する。
（１２）上記実施形態では、目標ＥＧＲ率ＲＡＯが急激に上昇する場合、ＥＧＲバルブ３３に応答遅れが生じていると、マップデータによって算出される目標ＥＧＲ率ＲＡＯと、写像によって出力される目標ＥＧＲ率ＲＡＯの推定値ｙｒとの差が大きくなる。ここで、ΔＥＧＲの差がある程度大きくなるためには、目標ＥＧＲ率ＲＡＯの変化量がある程度大きく、かつ目標ＥＧＲ率ＲＡＯの上昇変化量が大きい必要がある。そのため、本実施形態においては、このような場合に実行条件が成立するように閾値を設定している。上記実施形態によれば、内燃機関１０の状態として、ＥＧＲバルブ３３の応答遅れの異常の有無を判定する際に、ガード処理の技術を適用できる。
【０２３２】
＜第１１の実施形態＞
以下、第１１の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０２３３】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０のノッキング強度の推定値を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、内燃機関１０のノッキング強度の推定値を判定するプログラムが格納されている。
【０２３４】
図１７に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１６に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０２３５】
まず、ＣＰＵ７２は、ノッキングセンサ９２の検出信号Ｓｎｃの「ｓｎ」個のサンプリング値を取得する（Ｓ９１０）。
次にＣＰＵ７２は、Ｓ９１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ９１２）。本実施形態においては、ノッキングセンサ９２の検出信号Ｓｎｃの上限ガード値が設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０２３６】
取得値が上限ガード値以下である場合（Ｓ９１２：ＹＥＳ）、ＣＰＵ７２は、Ｓ９１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ９１４）。本実施形態においては、ノッキングセンサ９２の検出信号Ｓｎｃの下限ガード値が設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０２３７】
取得値が下限ガード値以上である場合（Ｓ９１４：ＹＥＳ）、ＣＰＵ７２は、ノッキング強度の代表値を出力する写像の入力変数に、各取得値の値を代入する（Ｓ９１６）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）〜入力変数ｘ（ｓｎ）にノッキングセンサ９２の検出信号Ｓｎｃ（１）〜検出信号Ｓｎｃ（ｓｎ）をそれぞれ代入する。
【０２３８】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（ｓｎ）を入力することによって、写像の出力値であるノッキング強度の代表値の推定値ｙｅを算出する（Ｓ９１８）。
【０２３９】
本実施形態において、この写像は、中間層が「α」個であって且つ、各中間層の活性化関数ｈ１〜ｈαが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力とゼロとのうちの小さくない方を出力する関数である。たとえば、第１の中間層の各ノードの値は、係数ｗ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜ｓｎ）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（ｓｎ）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αとすると、第ｍの中間層の各ノードの値は、係数ｗ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。ここで、ｎ１，ｎ２，…，ｎαは、それぞれ、第１、第２、…、第αの中間層のノード数である。ちなみに、ｗ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【０２４０】
次にＣＰＵ７２は、ノッキング強度の代表値の推定値ｙｅが、対応する閾値Ｍｉｊよりも大きいか否かを判定する（Ｓ９２０）。ノッキング強度の代表値の推定値ｙｅが閾値Ｍｉｊよりも大きいと判定された場合（Ｓ９２０：ＹＥＳ）、ＣＰＵ７２は、ノッキングが発生していると判定し、対処処理を実行する（Ｓ９２２）。本実施形態においては、ノッキングが発生していると判定された気筒について、点火装置２２の点火時期を遅角させる。
【０２４１】
ＣＰＵ７２は、Ｓ９２２の処理が完了する場合や、Ｓ９２０の処理において否定判定する場合には、図１７に示す一連の処理を一旦終了する。
ところで、Ｓ９１０において取得した取得値が上限ガード値を超えている場合（Ｓ９１２：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ９３０）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ９１６〜Ｓ９２２の処理をされる。
【０２４２】
また、Ｓ９１０において取得した取得値が下限ガード値未満である場合（Ｓ９１４：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ９３２）。これにより、下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ９１６〜Ｓ９２２の処理をされる。
【０２４３】
なお、本実施形態の写像データ７６ａを生成するシステムのうち、センサ群１０２には、燃焼室１８内の圧力を検出する圧力センサが含まれている。そして、写像データ７６ａを生成するうえで、予め設定されている期間内における当該圧力センサが検出する出力値のピーク値を教師データとしている。たとえば、予め設定されている期間が、一定のクランク角度範囲、圧縮上死点から圧縮上死点後９０°の範囲である。
【０２４４】
（１３）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０のノッキング強度の推定値を判定する際に、ガード処理の技術を適用できる。
＜第１２の実施形態＞
以下、第１２の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０２４５】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０のブローバイガス送出路１５からのブローバイガスの漏洩異常の有無を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、内燃機関１０のブローバイガス送出路１５からのブローバイガスの漏洩異常の有無を判定するプログラムが格納されている。
【０２４６】
ＣＰＵ７２は、スロットルバルブ１４を通過する吸入空気量が算出する。そして、吸気通路１２内へのブローバイガスの流入量を表す値として、スロットルバルブ１４を通過する吸入空気量の算出値ｍｔと、エアフローメータ８２によって検出される吸入空気量Ｇａとの吸入空気量差Δｍが用いられている。
【０２４７】
図１８に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１８に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０２４８】
まず、ＣＰＵ７２は、回転速度ＮＥ、充填効率η、吸入空気量Ｇａ、吸気圧Ｐｉｎ、大気圧Ｐａ、外気温Ｔｏｕｔ、スロットルバルブ１４の開口面積ＴＡを取得する（Ｓ１０１０）。スロットルバルブ１４の開口面積ＴＡは、回転速度ＮＥおよび充填効率ηを基に、ＣＰＵ７２によって算出される。
【０２４９】
次に、ＣＰＵ７２は、スロットルバルブ１４を通過する吸入空気量の算出値ｍｔを算出する（Ｓ１０１２）。算出値ｍｔは、Ｓ１０１０にて取得した取得値を基に、予め定められた数式によって算出される。
【０２５０】
次に、ＣＰＵ７２は、スロットルバルブ１４を通過する吸入空気量の算出値ｍｔと、エアフローメータ８２によって検出される吸入空気量Ｇａとの吸入空気量差Δｍを取得する（Ｓ１０１４）。
【０２５１】
次にＣＰＵ７２は、Ｓ１０１０において取得した取得値のうち回転速度ＮＥおよび充填効率ηと、Ｓ１０１４において取得した吸入空気量差Δｍが、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ１０１６）。上限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの上限ガード値、充填効率ηの上限ガード値、および吸入空気量差Δｍの上限ガード値が、それぞれ設定されている。
【０２５２】
取得値が上限ガード値以下である場合（Ｓ１０１６：ＹＥＳ）、ＣＰＵ７２は、Ｓ１０１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ１０１８）。本実施形態においては、回転速度ＮＥの下限ガード値、充填効率ηの下限ガード値、および吸入空気量差Δｍの下限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０２５３】
取得値が下限ガード値以上である場合（Ｓ１０１８：ＹＥＳ）、ＣＰＵ７２は、失火が生じた確率を算出するための写像の入力変数ｘ（１）〜ｘ（３）に、Ｓ１０１０において取得した取得値のうち回転速度ＮＥおよび充填効率ηと、Ｓ１０１４において取得した吸入空気量差Δｍの値を代入する（Ｓ１０２０）。詳しくは、ＣＰＵ７２は、入力変数ｘ（１）に回転速度ＮＥを代入し、入力変数ｘ（２）に充填効率ηを代入し、入力変数ｘ（３）に吸入空気量差Δｍを代入する。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０２５４】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（３）を入力することによって、ブローバイガスの各漏洩状態の確立を示す状態確率ｙｐ（１）、ｙｐ（２）、ｙｐ（３）を出力する（Ｓ１０２２）。本実施形態では、状態確率ｙｐ（１）は、ブローバイガス漏洩異常である確率を示す。ブローバイガス漏洩異常とは、ＰＣＶバルブ１３から、ブローバイガス送出路１５であるホースが外れたり、ブローバイガス送出路１５であるホースに穴が開いたりしたときに、吸気通路１２へのブローバイガスの流入量が増大することである。また、状態確率ｙｐ（２）は、ＰＣＶバルブ１３の固着異常である確率を示す。ＰＣＶバルブ１３の固着異常とは、ＰＣＶバルブ１３の弁体が固着することをいう。この場合、閉弁したまま開弁できなくなることで、吸気通路１２へのブローバイガスの流入量が内燃機関１０の運転状態から定まる流入量とは異なる流量となる。さらに、状態確率ｙｐ（３）は、上述した異常がない正常状態である確率を示す。
【０２５５】
なお、本実施形態において、この写像は、中間層が１層のニューラルネットワークと、ニューラルネットワークの出力ｙ’（ｉ）を規格化することによって、状態確率ｙｐ（１）〜ｙｐ（３）の和を「１」とするためのソフトマックス関数とによって構成されている。
【０２５６】
次に、ＣＰＵ７２は、Ｓ１０２２において出力した状態確率ｙｐ（１）〜ｙｐ（３）のうち、最大値ｙｐ（ｉ）を選定する（Ｓ１０２４）。ＣＰＵ７２は、選定した最大値ｙｐ（ｉ）が状態確率ｙｐ（１）であれば、ブローバイガス漏洩異常であると判定する。また、ＣＰＵ７２は、選定した最大値ｙｐ（ｉ）が状態確率ｙｐ（２）であれば、ＰＣＶバルブ１３の固着異常と判定する。さらに、ＣＰＵ７２は、選定した最大値ｙｐ（ｉ）が状態確率ｙｐ（３）であれば、正常状態と判定する。
【０２５７】
次に、ＣＰＵ７２は、Ｓ１０２０において判定した状態に基づいて、対処処理を実行する（Ｓ１０２６）。たとえば、ＣＰＵ７２は、判定した状態が、ブローバイガス漏洩異常またはＰＣＶバルブ１３の固着異常であれば、警告灯９８を点灯させる。
【０２５８】
ＣＰＵ７２は、Ｓ１０２６の処理が完了する場合には、図１８に示す一連の処理を一旦終了する。
ところで、Ｓ１０１０およびＳ１０１４において取得した取得値が上限ガード値を超えている場合（Ｓ１０１６：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ１０３０）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ１０２０〜Ｓ１０２６の処理をされる。
【０２５９】
また、Ｓ１０１０およびＳ１０１４において取得した取得値が下限ガード値未満である場合（Ｓ１０１８：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ１０３２）。これにより下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ１０２０〜Ｓ１０２６の処理をされる。
【０２６０】
なお、本実施形態の写像データ７６ａの生成においては、たとえば予めブローバイガス送出路１５が外れた状態の状態確率ｙｐｔ（１）、ＰＣＶ１３バルブの弁体が固着した状態の状態確率ｙｐｔ（２）、および正常状態の状態確率ｙｐｔ（３）を教師データとしている。そして、本実施形態の写像データ７６ａは、この教師データ、Ｓ１０１０およびＳ１０１４で取得した取得値を訓練データとして学習されたものである。
【０２６１】
（１４）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０のブローバイガス漏洩異常およびＰＣＶバルブ１３の固着異常を判定する際に、ガード処理の技術を適用できる。
【０２６２】
＜第１３の実施形態＞
以下、第１３の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０２６３】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０の燃料蒸気を漏洩させる穴あき異常の有無を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、内燃機関１０の燃料蒸気を漏洩させる穴あき異常の有無を判定するプログラムが格納されている。
【０２６４】
図１９に、本実施形態において、制御装置７０が実行する処理の手順を示す。図１９に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０２６５】
図１９に示す一連の処理において、ＣＰＵ７２は、まず、インバランスの検出処理の実行条件が成立するか否かを判定する（Ｓ１１１０）。実行条件には、内燃機関１０が駆動停止しており、キャニスタ４０内部および燃料タンク３８内が、図示しない吸引ポンプにより負圧に制御されていることが含まれる。
【０２６６】
次に、ＣＰＵ７２は、一定時間毎のキャニスタ内圧Ｐｅ１、Ｐｅ２、…、Ｐｅｎ、および大気圧Ｐａ１、Ｐａ２、…、Ｐａ３を取得する（Ｓ１１１２）。キャニスタ内圧Ｐｅは、一定時間毎に、キャニスタ内圧センサ９３によって検出された圧力値である。
【０２６７】
次にＣＰＵ７２は、Ｓ１１１２において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ１１１４）。上限ガード値は、取得値の種類毎に設定されており、キャニスタ内圧Ｐｅの上限ガード値および大気圧Ｐａの上限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０２６８】
取得値が上限ガード値以下である場合（Ｓ１１１４：ＹＥＳ）、ＣＰＵ７２は、Ｓ１１１２において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ１１１６）。下限ガード値は、取得値の種類毎に設定されており、キャニスタ内圧Ｐｅの下限ガード値および大気圧Ｐａの下限ガード値が、それぞれ設定されている。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０２６９】
取得値が下限ガード値以上である場合（Ｓ１１１６：ＹＥＳ）、ＣＰＵ７２は、失火が生じた確率を算出するための写像の入力変数ｘ（１）〜ｘ（２ｎ）に、Ｓ１１１２において取得した取得値の値を代入する（Ｓ１１１８）。詳しくは、ＣＰＵ７２は、入力変数ｘ（１）〜ｘ（ｎ）にキャニスタ内圧Ｐｅ１〜Ｐｅｎを代入し、入力変数ｘ（ｎ＋１）〜ｘ（２ｎ）に大気圧Ｐａ１〜Ｐａｎを代入する。
【０２７０】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（２ｎ）を入力することによって、燃料蒸気排出防止システムの状態を示す状態確率ｙｖ（１）、ｙｖ（２）、ｙｖ（３）、ｙｖ（４）を出力する（Ｓ１１２０）。本実施形態では、状態確率ｙｖ（１）は、燃料蒸気が漏洩する穴あきが発生している穴あき異常を示す。また、状態確率ｙｖ（２）は、パージバルブ４４が開弁し続ける開弁異常を示す。状態確率ｙｖ（３）は、パージバルブ４４が閉弁し続ける閉弁異常を示す。そして、状態確率ｙｖ（４）は、上述した異常がない正常状態である確率を示す。
【０２７１】
なお、本実施形態において、この写像は、中間層が１層のニューラルネットワークと、ニューラルネットワークの出力ｙ’（ｉ）を規格化することによって、状態確率ｙｖ（１）〜ｙｖ（４）の和を「１」とするためのソフトマックス関数とによって構成されている。
【０２７２】
次に、ＣＰＵ７２は、Ｓ１１２０において出力した状態確率ｙｖ（１）〜ｙｖ（４）のうち、最大値ｙｖ（ｉ）を選定する（Ｓ１１２２）。ＣＰＵ７２は、選定した最大値ｙｖ（ｉ）が状態確率ｙｖ（１）であれば、パージ通路４２に燃料蒸気が漏洩する穴あき異常が発生していると判定する。また、ＣＰＵ７２は、選定した最大値ｙｖ（ｉ）が状態確率ｙｖ（２）であれば、パージバルブ４４の開弁異常と判定する。ＣＰＵ７２は、選定した最大値ｙｖ（ｉ）が状態確率ｙｖ（３）であれば、パージバルブ４４の閉弁異常と判定する。そして、ＣＰＵ７２は、選定した最大値ｙｖ（ｉ）が状態確率ｙｖ（４）であれば、正常状態と判定する。
【０２７３】
次に、ＣＰＵ７２は、Ｓ１１１２において判定した状態に基づいて、対処処理を実行する（Ｓ１１２４）。たとえば、ＣＰＵ７２は、判定した異常状態を伝達するように、各異常状態に対応して警告灯９８を点灯させる。
【０２７４】
ＣＰＵ７２は、Ｓ１１２４の処理が完了する場合や、Ｓ１１１０の処理において否定判定する場合には、図１９に示す一連の処理を一旦終了する。
ところで、Ｓ１１１２において取得した取得値が上限ガード値を超えている場合（Ｓ１１１４：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ１１３０）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ１１１８〜Ｓ１１２４の処理をされる。
【０２７５】
また、Ｓ１１１２において取得した取得値が下限ガード値未満である場合（Ｓ１１１６：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ１１３２）。これにより下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ１１１８〜Ｓ１１１２４の処理をされる。
【０２７６】
なお、本実施形態の写像データ７６ａの生成においては、教師データとして、正解ラベルｙｖｔ（１）〜ｙｖｔ（４）を用いて学習されている。正解ラベルｙｖｔ（１）は、パージ通路４２に穴あきが発生した状態での正解ラベルを示す。正解ラベルｙｖｔ（２）は、パージバルブ４４が開弁し続ける状態での正解ラベルを示す。正解ラベルｙｖｔ（３）は、パージバルブ４４が閉弁し続ける状態での正解ラベルを示す。正解ラベルｙｖｔ（４）は、正常状態での正解ラベルを示す。
【０２７７】
（１５）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０のパージ通路４２およびパージバルブ４４の異常を判定する際に、ガード処理の技術を適用できる。
＜第１４の実施形態＞
以下、第１４の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０２７８】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０の一定時間後の燃料噴射用の高圧燃料ポンプ３９の吐出燃料温ＴＦの推定値を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、一定時間後の高圧燃料ポンプ３９の吐出燃料温ＴＦの推定値を判定するプログラムが格納されている。
【０２７９】
図２０に、本実施形態において、制御装置７０が実行する処理の手順を示す。図２０に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０２８０】
まず、ＣＰＵ７２は、回転速度ＮＥ、充填効率η、潤滑オイル温Ｔｏｉｌ、高圧燃料ポンプ３９への供給燃料量ＦＳ、吸気温ＴＯ、車速ＳＰＤ、高圧燃料ポンプ３９からの吐出燃料温ＴＦの前回値ＴＦ（ｎ−１）を取得する（Ｓ１２１０）。高圧燃料ポンプ３９への供給燃料量ＦＳは、たとえば、低圧燃料ポンプ３７の駆動電力から算出される。
【０２８１】
次にＣＰＵ７２は、Ｓ１２１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ１２１２）。上限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの上限ガード値、充填効率ηの上限ガード値、潤滑オイル温Ｔｏｉｌの上限ガード値、供給燃料量ＦＳの上限ガード値、吸気温ＴＯの上限ガード値、車速ＳＰＤの上限ガード値、および吐出燃料温ＴＦの上限ガード値が、それぞれ設定されている。
【０２８２】
取得値が上限ガード値以下である場合（Ｓ１２１２：ＹＥＳ）、ＣＰＵ７２は、Ｓ１２１において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ１２１４）。下限ガード値は、取得値の種類毎に設定されており、回転速度ＮＥの下限ガード値、充填効率ηの下限ガード値、潤滑オイル温Ｔｏｉｌの下限ガード値、供給燃料量ＦＳの下限ガード値、吸気温ＴＯの下限ガード値、車速ＳＰＤの下限ガード値、および吐出燃料温ＴＦの下限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０２８３】
取得値が下限ガード値以上である場合（Ｓ１２１４：ＹＥＳ）、ＣＰＵ７２は、一定時間後の高圧燃料ポンプ３９の吐出燃料温ＴＦの推定値を出力する写像の入力変数に、各取得値の値を代入する（Ｓ１２１６）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）に回転速度ＮＥを入力し、入力変数ｘ（２）に充填効率ηを入力し、入力変数ｘ（３）に潤滑オイル温Ｔｏｉｌを入力する。また、ＣＰＵ７２は、入力変数ｘ（４）に供給燃料量ＦＳを入力し、入力変数ｘ（５）に吸気温ＴＯを入力し、入力変数ｘ（６）に車速ＳＰＤを入力し、入力変数ｘ（７）に前回の吐出燃料温ＴＦの推定値を入力する。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０２８４】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（７）を入力することによって、写像の出力値である高圧燃料ポンプ３９の吐出燃料温ＴＦの推定値ｙｆを算出する（Ｓ１２１８）。
【０２８５】
本実施形態において、この写像は、中間層が「α」個であって且つ、各中間層の活性化関数ｈ１〜ｈαが、ハイパボリックタンジェントであり、出力層の活性化関数ｆがＲｅＬＵであるニューラルネットワークによって構成されている。なお、ＲｅＬＵは、入力とゼロとのうちの小さくない方を出力する関数である。たとえば、第１の中間層の各ノードの値は、係数ｗ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜ｓｎ）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（ｓｎ）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。すなわち、ｍ＝１，２，…，αとすると、第ｍの中間層の各ノードの値は、係数ｗ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。ここで、ｎ１，ｎ２，…，ｎαは、それぞれ、第１、第２、…、第αの中間層のノード数である。ちなみに、ｗ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義している。
【０２８６】
次にＣＰＵ７２は、吐出燃料温ＴＦの推定値ｙｆが、第１設定温度ＴＬよりも小さいか否かを判定する（Ｓ１２２０）。吐出燃料温ＴＦの推定値ｙｆが第１設定温度ＴＬよりも小さいと判定された場合（Ｓ１２２０：ＹＥＳ）、ＣＰＵ７２は、高圧燃料ポンプ３９より下流側であって燃料噴射弁２０より上流側の燃料圧ＰＴが燃料圧Ｐ１となるように対処処理をする（Ｓ１２２２）。
【０２８７】
一方で、吐出燃料温ＴＦの推定値ｙｆが第１設定温度ＴＬ以上であると判定された場合（Ｓ１２２０：ＮＯ）、ＣＰＵ７２は、吐出燃料温ＴＦの推定値ｙｆが、第１設定温度ＴＬよりも大きい第２設定温度ＴＭよりも小さいか否かを判定する（Ｓ１２２４）。吐出燃料温ＴＦの推定値ｙｆが第２設定温度ＴＭよりも小さいと判定された場合（Ｓ１２２４：ＹＥＳ）、ＣＰＵ７２は、高圧燃料ポンプ３９より下流側であって燃料噴射弁２０より上流側の燃料圧ＰＴが燃料圧Ｐ１よりも大きい燃料圧Ｐ２となるように対処処理をする（Ｓ１２２６）。
【０２８８】
吐出燃料温ＴＦの推定値ｙｆが第２設定温度ＴＭ以上であると判定された場合（Ｓ１２２４：ＮＯ）、ＣＰＵ７２は、高圧燃料ポンプ３９より下流側であって燃料噴射弁２０より上流側の燃料圧ＰＴが燃料圧Ｐ２よりも大きい燃料圧Ｐ３となるように対処処理をする（Ｓ１２２８）。
【０２８９】
ＣＰＵ７２は、Ｓ１２２２の処理が完了する場合や、Ｓ１２２６，Ｓ１２２８の処理が完了する場合には、図２０に示す一連の処理を一旦終了する。
ところで、Ｓ１２１０において取得した取得値が上限ガード値を超えている場合（Ｓ１２１２：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ１２３０）。これにより、上限ガード値を超えた取得値は、上限ガード値と同一値として設定しなおされ、その後上述したＳ１２１６〜Ｓ１２２８の処理をされる。
【０２９０】
また、Ｓ１２１０において取得した取得値が下限ガード値未満である場合（Ｓ１２１４：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ１２３２）。これにより、下限ガード値未満の取得値は、下限ガード値と同一値として設定しなおされ、その後上述したＳ１２１６〜Ｓ１２２８の処理をされる。
【０２９１】
なお、本実施形態の写像データ７６ａを生成するシステムのうち、センサ群１０２には、高圧燃料ポンプ３９によって噴射される燃料の温度を検出する燃料温度センサが含まれている。そして、写像データ７６ａを生成するうえで、一定時間後の燃料温度センサが検出する燃料温度を教師データとしている。
【０２９２】
（１６）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０の一定時間後の高圧燃料ポンプ３９の吐出燃料温ＴＦの推定値を判定する際に、ガード処理の技術を適用できる。
【０２９３】
＜第１５の実施形態＞
以下、第１５の実施形態について、上述の第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【０２９４】
図２１に、内燃機関１０を冷却するための機関冷却水循環システム２００を示す。この図２１に示すように、内燃機関１０のシリンダブロック１０Ｓやシリンダヘッド１０Ｈには、冷却水が流れるウォータジャケット１０Ｗが設けられている。なお、シリンダヘッド１０Ｈに設けられたウォータジャケット１０Ｗによって吸気ポートの壁面や燃焼室１８の頂面の壁面が冷却される。
【０２９５】
シリンダヘッド１０Ｈに設けられたウォータジャケット１０Ｗの出口１９Ｂには、内燃機関１０のウォータジャケット１０Ｗを通過した冷却水を分流する分岐部２５０が接続されている。また、出口１９Ｂの近傍には、冷却水の温度である水温ＴＨＷを検出する水温センサ８９が設けられている。
【０２９６】
シリンダブロック１０Ｓに設けられたウォータジャケット１０Ｗの入口１９Ａと分岐部２５０とは、第１配管２１０で接続されている。この第１配管２１０には、冷却水の流れ方向においてその上流から順に、外気との熱交換を通じて冷却水を冷却するラジエータ２１１、サーモスタット２１２、電動式のウォータポンプ２１３が設けられている。サーモスタット２１２が開弁している場合、ウォータジャケット１０Ｗを通過した冷却水は、分岐部２５０、ラジエータ２１１、サーモスタット２１２、およびウォータポンプ２１３を経由してウォータジャケット１０Ｗに戻るようになっている。また、サーモスタット２１２が閉弁している場合、第１配管２１０内の冷却水循環は停止する。
【０２９７】
また、分岐部２５０とウォータポンプ２１３とは、第２配管２２０で接続されている。この第２配管２２０には、冷却水と熱交換を行う熱交換器２２１が設けられている。熱交換器２２１は、たとえば車室に送風される空気を温めるヒータコアなどで構成される。ウォータジャケット１０Ｗを通過した冷却水は、分岐部２５０、熱交換器２２１、およびウォータポンプ２１３を経由してウォータジャケット１０Ｗに戻るようになっており、ウォータポンプ２１３の駆動中は、サーモスタット２１２の開閉状態によらず、第２配管２２０内の冷却水は循環するようになっている。本実施形態では、第１配管２１０がバイパス通路として、第２配管２２０がメイン通路として、それぞれ機能している。
【０２９８】
本実施形態では、内燃機関の状態判定装置は、内燃機関１０のサーモスタット２１２の異常の有無を判定する装置として構成されている。本実施形態の内燃機関１０の状態判定装置のＲＯＭ７４には、判定プログラム７４ａとして、内燃機関１０のサーモスタット２１２の異常の有無を判定するプログラムが格納されている。
【０２９９】
図２２に、本実施形態において、制御装置７０が実行する処理の手順を示す。図２２に示す処理は、図１に示すＲＯＭ７４に記憶された判定プログラム７４ａをＣＰＵ７２がたとえば所定周期で繰り返し実行することにより実現される。
【０３００】
まず、ＣＰＵ７２は、吸入空気量Ｇａ、要求噴射量Ｑｄ、外気温Ｔｏｕｔ、車速ＳＰＤ、前回推定した水温ＴＨＷの推定値ＴＷｅの前回値を取得する（Ｓ１３１０）。なお、内燃機関１０が始動してから最初にＳ１３１０の処理が実行される際には、水温ＴＨＷの推定値ＴＷｅの前回値として、内燃機関１０始動時の水温センサ８９による水温ＴＨＷが取得される。
【０３０１】
次にＣＰＵ７２は、Ｓ１３１０において取得した取得値が、各取得値に応じて定められた上限ガード値以下であるか否かを判定する（Ｓ１３１２）。上限ガード値は、取得値の種類毎に設定されており、吸入空気量Ｇａの上限ガード値、要求噴射量Ｑｄの上限ガード値、外気温Ｔｏｕｔの上限ガード値、車速ＳＰＤの上限ガード値、および水温ＴＨＷの上限ガード値が、それぞれ設定されている。
【０３０２】
取得値が上限ガード値以下である場合（Ｓ１３１２：ＹＥＳ）、ＣＰＵ７２は、Ｓ１３１０において取得した取得値が、各取得値に応じて定められた下限ガード値以上であるか否かを判定する（Ｓ１３１４）。下限ガード値は、取得値の種類毎に設定されており、吸入空気量Ｇａの下限ガード値、要求噴射量Ｑｄの下限ガード値、外気温Ｔｏｕｔの下限ガード値、車速ＳＰＤの下限ガード値、および水温ＴＨＷの下限ガード値が、それぞれ設定されている。なお、各上限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの上限値に定められている。
【０３０３】
取得値が下限ガード値以上である場合（Ｓ１３１４：ＹＥＳ）、ＣＰＵ７２は、一定時間後の水温のＴＨＷの推定値ＴＷｅを出力する写像の入力変数に、各取得値の値を代入する（Ｓ１３１６）。すなわち、ＣＰＵ７２は、入力変数ｘ（１）に吸入空気量Ｇａを入力し、入力変数ｘ（２）に要求噴射量Ｑｄを入力し、入力変数ｘ（３）に外気温Ｔｏｕｔを入力し、入力変数ｘ（４）に車速ＳＰＤを入力し、入力変数ｘ（５）に水温ＴＨＷの推定値ＴＷｅの前回値を入力する。なお、各下限ガード値は、記憶装置７６に記憶された写像データ７６ａを機械学習によって学習させる際に入力されたデータの範囲内であって、その入力データの下限値に定められている。そして、この実施形態では、入力値それぞれについて、下限ガード値以上、上限ガード値以下の範囲が、入力値の許容範囲となっていて、当該許容範囲が機械学習によって学習させる際に入力されたデータの範囲と一致している。
【０３０４】
次にＣＰＵ７２は、図１に示す記憶装置７６に記憶された写像データ７６ａによって規定される写像に入力変数ｘ（１）〜ｘ（５）を入力することによって、写像の出力値である一定時間後の水温ＴＨＷの推定値ＴＷｅを算出する（Ｓ１３１８）。
【０３０５】
次にＣＰＵ７２は、一定時間経過したか否かを判定する（Ｓ１３２０）。一定時間経過していない場合（Ｓ１３２０：ＮＯ）、ＣＰＵ７２は、Ｓ１３２０の処理を繰り返す。一方で、一定時間経過した場合（Ｓ１３２０：ＹＥＳ）、ＣＰＵ７２は、一定時間後の水温ＴＨＷの推定値ＴＷｅが、水温センサ８９により検出された同時刻の水温ＴＨＷ以上であるか否かを判定する（Ｓ１３２２）。
【０３０６】
水温ＴＨＷの推定値ＴＷｅが同時刻の水温ＴＨＷ以上である場合（Ｓ１３２２：ＹＥＳ）、ＣＰＵ７２は、推定値ＴＷｅから水温ＴＨＷを減算した水温差ΔＴＷ１を算出する（Ｓ１３２４）。次に、ＣＰＵ７２は、水温差ΔＴＷ１が昇温時閾値ＡＸよりも大きいか否かを判定する（Ｓ１３２６）。水温差ΔＴＷ１が昇温時閾値ＡＸよりも大きい場合（Ｓ１３２６）、ＣＰＵ７２は、サーモスタット２１２が開弁し続ける開弁異常が発生していると判定する（Ｓ１３２８）。そして、ＣＰＵ７２は、サーモスタット２１２の開弁異常に対応する対処処理を実行する（Ｓ１３３０）。
【０３０７】
一方で、水温ＴＨＷの推定値ＴＷｅが同時刻の水温ＴＨＷ未満である場合（Ｓ１３２２：ＮＯ）、ＣＰＵ７２は、水温ＴＨＷの推定値ＴＷｅが、内燃機関１０が始動してから現在の時刻までに算出された値のピークを経過しているか否かを判定する（Ｓ１３３２）。
【０３０８】
推定値ＴＷｅがピークを経過している場合（Ｓ１３３２：ＹＥＳ）、すなわち、推定値ＴＷｅの推移が低下している場合、ＣＰＵ７２は、水温センサ８９から検出された水温ＴＨＷから推定値ＴＷｅを減算した水温差ΔＴＷ２を算出する（Ｓ１３３４）。次に、ＣＰＵ７２は、水温差ΔＴＷ２が降温時閾値ＢＸよりも大きいか否かを判定する（Ｓ１３３６）。水温差ΔＴＷ２が降温時閾値ＢＸよりも大きい場合（Ｓ１３３６）、ＣＰＵ７２は、サーモスタット２１２が開弁し続ける開弁異常が発生していると判定する（Ｓ１３３８）。そして、ＣＰＵ７２は、サーモスタット２１２の開弁異常に対応する対処処理を実行する（Ｓ１３４０）。
【０３０９】
ＣＰＵ７２は、Ｓ１３３０，Ｓ１３４０の処理が完了する場合や、Ｓ１３２６，Ｓ１３３２，Ｓ１３３６の処理において否定判定する場合には、図２２に示す一連の処理を一旦終了する。
【０３１０】
ところで、Ｓ１３１０において取得した取得値が上限ガード値を超えている場合（Ｓ１３１２：ＮＯ）、ＣＰＵ７２は、取得値を上限ガード値に一致させるガード処理を行う（Ｓ１３５０）。これにより、上限ガード値を超えた取得値は、上限ガード値の値として設定され、その後上述したＳ１３１６〜Ｓ１３４０の処理をされる。
【０３１１】
また、Ｓ１３１０において取得した取得値が下限ガード値未満である場合（Ｓ１３１４：ＮＯ）、ＣＰＵ７２は、取得値を下限ガード値に一致させるガード処理を行う（Ｓ１３５２）。これにより、下限ガード値未満の取得値は、下限ガード値の値として設定され、その後上述したＳ１３１６〜Ｓ１３４０の処理をされる。
【０３１２】
なお、本実施形態の写像データ７６ａを生成するシステムのうち、センサ群１０２には、水温センサ８９が含まれている。そして、写像データ７６ａを生成するうえで、一定時間後の水温センサ８９が検出する水温ＴＨＷを教師データとしている。
【０３１３】
（１７）上記実施形態によれば、内燃機関１０の状態として、内燃機関１０のサーモスタット２１２の異常の有無を判定する際に、ガード処理の技術を適用できる。
＜対応関係＞
上記実施形態における事項と、上記「課題を解決するための手段」の欄に記載した事項との対応関係は、次の通りである。以下では、「課題を解決するための手段」の欄に記載した解決手段の番号毎に、対応関係を示している。［１］状態判定装置は、制御装置７０に対応する。実行装置は、第１および第３〜第１５の実施形態におけるＣＰＵ７２およびＲＯＭ７４に、第２の実施形態におけるＣＰＵ７２，１２２およびＲＯＭ７４，１２４に対応する。記憶装置は、第１および第３〜第１５の実施形態における記憶装置７６に、第２の実施形態における記憶装置１２６に対応する。ガード処理は、たとえば第１の実施形態のＳ１５およびＳ１６に対応する。［２］許容範囲は、下限ガード値以上、上限ガード値以下の範囲に対応する。［３］許容範囲の上限値は、上限ガード値に対応する。許容範囲の下限値は、下限ガード値に対応する。［４］触媒は、上流側触媒３４に対応する。流体エネルギ変数は、排気温平均値Ｔｅｘｕａｖｅおよび吸入空気量Ｇａの組データ等に対応する。外気温変数は、外気温Ｔｏｕｔに対応し、過剰量変数は、上流側平均値Ａｆｕａｖｅおよび吸入空気量Ｇａの組データ等や、燃料過不足量平均値Ｑｉａｖｅに対応する。取得処理は、Ｓ１０の処理に対応する。［５］第１間隔は、７２０°ＣＡに対応し、第２間隔は、３０°ＣＡに対応し、瞬時速度パラメータは、微小回転時間Ｔ３０に対応する。取得処理は、Ｓ１１０およびＳ１１１の処理に対応する。［６］所定の回転角度間隔は、７２０°ＣＡに対応する。空燃比検出変数は、上流側平均値Ａｆｕａｖｅに対応する。瞬時速度変数は、微小回転時間Ｔ３０に対応する。複数の回転波形変数は、微小回転時間Ｔ３０（１）〜Ｔ３０（２４）に対応する。第３間隔は、３０°ＣＡに対応し、第４間隔は、３０°ＣＡに対応する。取得処理は、Ｓ２１１の処理に対応する。［７］過剰量変数に関する時系列データは、上流側平均値Ａｆｕａｖｅ、回転速度ＮＥおよび充填効率ηのそれぞれの時系列データに対応する。取得処理は、Ｓ３１０の処理に対応する。［８］暖機操作量変数は、点火時期平均値ａｉｇａｖｅや、振幅値平均値αａｖｅに対応する。対応付けデータは、Ｓ４３０〜Ｓ４４２の処理を規定するデータに対応する。取得処理は、Ｓ４１０の処理に対応する。［９］過不足量変数は、燃料過不足量積算値ＩｎＱｉに対応する。取得処理は、Ｓ５１０の処理に対応する。［１０］吸気温変数は、吸気温ＴＯに対応し、壁面変数は、水温ＴＨＷに対応し、流量変数は、回転速度ＮＥおよび充填効率ηに対応する。取得処理は、Ｓ６１０の処理に対応する。［１１］過剰量変数は、燃料過不足量Ｑｉに対応し、第１所定期間は、Ｑｄ（１）〜Ｑｄ（ｓｎ）のサンプリング期間に対応する。空燃比検出変数は、差変数ΔＡｆｕや、時間差分最大値ｄＡｆｕｍａｘに対応し、第２所定期間は、ΔＡｆｕ（１）〜ΔＡｆｕ（ｓｎ）や、ｄＡｆｕｍａｘ（１）〜ｄＡｆｕｍａｘ（ｓｎ）のサンプリング期間に対応する。取得処理は、Ｓ７１８およびＳ７２０の処理に対応する。［１２］機関負荷に関する変数は、充填効率ηに対応する。取得処理は、Ｓ８１０およびＳ８１６の処理に対応する。［１３］内燃機関の振動を表す変数は、ノッキングセンサ９２からの検出信号Ｓｎｃに対応する。取得処理は、Ｓ９１０の処理に対応する。［１４］吸入空気量検出器は、エアフローメータ８２に対応する。吸入空気量差Δｍは、スロットルバルブ１４を通過する吸入空気量の算出値ｍｔと、エアフローメータ８２によって検出される吸入空気量Ｇａとの差に対応する。取得処理は、Ｓ１０１０の処理に対応する。［１５］取得処理は、Ｓ１１１２の処理に対応する。［１６］複数の変数は、回転速度ＮＥ、充填効率η、潤滑オイル温Ｔｏｉｌ、高圧燃料ポンプ３９への供給燃料量ＦＳ、吸気温ＴＯ、車速ＳＰＤ、前回の高圧燃料ポンプ３９からの吐出燃料温ＴＦに対応する。取得処理は、Ｓ１２１０の処理に対応する。［１７］取得処理は、Ｓ１３１０に対応する。［１８］第１実行装置は、ＣＰＵ７２およびＲＯＭ７４に対応する。第２実行装置は、ＣＰＵ１２２およびＲＯＭ１２４に対応する。車両側送信処理は、図６のＳ８０の処理に対応する。外部側受信処理は、図６のＳ９６の処理に対応する。「出力算出処理によって算出された出力に基づく信号」は、判定結果に関する信号に対応する。［１９］データ解析装置は、センター１２０に対応する。［２０］内燃機関の制御装置は、図５に示す制御装置７０に対応する。
【０３１４】
（その他の実施形態）
なお、本実施形態は、以下のように変更して実施することができる。本実施形態および以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【０３１５】
・「ガード処理について」
上記実施形態において、取得値が上限ガード値を超えている場合には、上限ガード値と同一値と設定しなおしているが、設定しなおす値は、上限ガード値に近づけられればよい。この点、取得値が下限ガード値未満である場合に、設定しなおす値は、下限ガード値に近づけられればよい。すなわち、取得値が許容範囲外である場合には、設定しなおす値は、許容範囲に近づけられるまたは許容範囲内の値にすればよい。この場合、たとえば取得値がセンサの異常等によって、極端に大きい値や小さい値になった場合に、入力される値を許容範囲に近づけることができる。
【０３１６】
・「許容範囲について」
上記実施形態において、許容範囲は、機械学習によって学習させる際に入力されたデータの範囲と一致しているが、許容範囲の大きさは、この限りではない。たとえば、許容範囲の大きさが機械学習によって学習される際に入力されたデータの範囲内であってもよく、この場合には、写像からの出力値が、学習された際の出力の範囲内におさまりやすい。
【０３１７】
・「内燃機関状態変数について」
上記実施形態において、写像に入力する内燃機関状態変数は、上記実施形態の例に限られない。内燃機関状態変数は、内燃機関１０の状態を示すパラメータであれば特に限定されない。例えば、第１実施形態において、上流側平均値Ａｆｕａｖｅに代えて、内燃機関１０の周囲の外気の温度に関する変数である外気温変数として機能する外気温Ｔｏｕｔとしてもよい。
【０３１８】
・「内燃機関の状態について」
上記実施形態において、ＣＰＵ７２が判定する内燃機関１０の状態は、上記各実施形態の例に限られない。
【０３１９】
・「第１間隔および第２間隔について」
上記実施形態では、１燃焼サイクルである７２０°ＣＡの回転角度間隔内における連続する複数の第２間隔のそれぞれにおける瞬時速度パラメータとしての微小回転時間Ｔ３０を失火の有無の判定のための写像の入力パラメータとした。すなわち、第１間隔が７２０°ＣＡであり、第２間隔が３０°ＣＡである例を示したが、これに限らない。たとえば、第１間隔が７２０°ＣＡよりも長い回転角度間隔であってもよい。もっとも、第１間隔が７２０°ＣＡ以上であることも必須ではない。たとえば、特定の気筒において失火が生じた確率や発生トルクに関するデータを出力する写像などの入力については、上記第１間隔を４８０°ＣＡとするなど、７２０°ＣＡ以下の間隔としてもよい。この際、圧縮上死点の出現間隔よりも長い回転角度間隔とすることが望ましい。なお、上記第１間隔には、失火が生じた確率が求められる対象となる気筒の圧縮上死点が含まれることとする。
【０３２０】
第２間隔としては、３０°ＣＡに限らない。たとえば１０°ＣＡ等、３０°ＣＡよりも小さい角度間隔であってもよい。もっとも３０°ＣＡ以下の角度間隔に限らず、たとえば４５°ＣＡ等であってもよい。
【０３２１】
・「第３間隔および第４間隔について」
上記実施形態において、写像への入力となる上流側平均値Ａｆｕａｖｅのサンプリング間隔である第３間隔としては、３０°ＣＡに限らない。たとえば１０°ＣＡ等、３０°ＣＡよりも小さい角度間隔であってもよい。もっとも３０°ＣＡ以下の角度間隔に限らず、たとえば４５°ＣＡ等であってもよい。
【０３２２】
写像への入力となる微小回転時間Ｔ３０のサンプリング間隔である第４間隔としては、３０°ＣＡに限らない。たとえば１０°ＣＡ等、３０°ＣＡよりも小さい角度間隔であってもよい。もっとも３０°ＣＡ以下の角度間隔に限らず、たとえば４５°ＣＡ等であってもよい。なお、第３間隔と第４間隔とが、同一の大きさの間隔であることは必須ではない。
【０３２３】
・「写像の入力について」
上記各実施形態において、写像の入力としては、上記実施形態の例に限られない。たとえば上記実施形態等において検出用写像への入力とした複数種類の物理量の一部については、ニューラルネットワークや回帰式への直接の入力とする代わりに、それらの主成分分析によるいくつかの主成分を、ニューラルネットワークや回帰式への直接の入力としてもよい。もっとも、主成分をニューラルネットワークや回帰式の入力とする場合に、ニューラルネットワークや回帰式への入力の一部のみが主成分となることは必須ではなく、全部を主成分としてもよい。なお、主成分を検出用写像への入力とする場合、写像データ７６ａ，１２６ａには、主成分を定める検出用写像を規定するデータが含まれることとなる。
【０３２４】
・「内燃機関の状態判定システムについて」
第３〜１５の実施形態において、内燃機関１０の状態の判定処理を行う際に、第２実施形態のように、内燃機関の状態判定システムを構成してもよい。
【０３２５】
・「対処処理について」
上記実施形態における対処処理の構成は、上記実施形態の例に限られない。たとえば、警告灯９８を操作することによって、視覚情報を通じて失火が生じた旨を報知したが、これに限らない。たとえばスピーカを操作することによって、聴覚情報を通じて失火が生じた旨を報知してもよい。また、たとえば図１に示す制御装置７０が通信機１２９を備えることとし、通信機１２９を操作してユーザの携帯端末に失火が生じた旨の信号を送信する処理としてもよい。これは、ユーザの携帯端末に、報知処理を実行するアプリケーションプログラムをインストールしておくことにより実現できる。また、第１の実施形態における対処処理として、図４に示す処理の一部または全部を省略してもよい。この点、気筒間の空燃比ばらつきについても同様である。
【０３２６】
・「写像データについて」
上記各実施形態において、写像データの構成は、各実施形態の例に限られない。
・「機械学習のアルゴリズムについて」
機械学習のアルゴリズムとしては、ニューラルネットワークを用いるものに限らない。たとえば回帰式を用いてもよい。これは、上記ニューラルネットワークにおいて中間層を備えないものに相当する。またたとえばサポートベクトルマシンを用いてもよい。この場合、出力の値の大きさ自体には意味が無く、その値が正であるか否かに応じて、失火が生じたか否かを表現する。換言すれば、燃焼状態変数の値が３値以上の値を有してそれらの値の大小が失火の確率の大小を表現するものとは相違する。
【０３２７】
・「写像データの生成手法について」
上記実施形態において、写像データの生成方法は、クランク軸２４のダイナモメータを接続し内燃機関１０を稼働した際のクランク軸２４の回転挙動に基づき学習を行うものに限らない。たとえば内燃機関１０を車両に搭載し、車両を走行させた際のクランク軸２４の回転挙動に基づき学習を行ってもよい。これによれば、車両が走行する路面の状態によるクランク軸２４の回転挙動の影響を学習に反映させることができる。
【０３２８】
・「データ解析装置について」
第２実施形態において、図６（ｂ）の処理を、たとえばユーザが所持する携帯端末によって実行してもよい。これは、携帯端末に図６（ｂ）の処理を実行するアプリケーションプログラムをインストールしておくことにより実現できる。なお、この際、たとえばＳ８０の処理におけるデータの送信が有効な距離が車両の長さ程度である設定とする等して、車両ＩＤの送受信処理を削除してもよい。
【０３２９】
・「実行装置について」
各実施形態における実行装置としては、ＣＰＵ７２，１２２とＲＯＭ７４，１２４とを備えて、ソフトウェア処理を実行するものに限らない。たとえば上記実施形態においてソフトウェア処理されたものの少なくとも一部を、ハードウェア処理する専用のハードウェア回路（たとえばＡＳＩＣ等）を備えてもよい。すなわち、実行装置は、以下の（ａ）〜（ｃ）のいずれかの構成であればよい。（ａ）上記処理の全てを、プログラムに従って実行する処理装置と、プログラムを記憶するＲＯＭ等のプログラム格納装置とを備える。（ｂ）上記処理の一部をプログラムに従って実行する処理装置およびプログラム格納装置と、残りの処理を実行する専用のハードウェア回路とを備える。（ｃ）上記処理の全てを実行する専用のハードウェア回路を備える。ここで、処理装置およびプログラム格納装置を備えたソフトウェア実行装置や、専用のハードウェア回路は複数であってもよい。
【０３３０】
・「記憶装置について」
第１および第２の実施形態では、写像データ７６ａ，１２６ａが記憶される記憶装置と、判定プログラム７４ａや温度推定メインプログラム１２４ａが記憶される記憶装置であるＲＯＭ７４，１２４とを別の記憶装置としたが、これに限らない。この点、他の実施形態における記憶装置についても同様である。
【０３３１】
・「内燃機関の状態について」
判定処理が判定する内燃機関１０の状態は、失火や気筒間空燃比インバランス以外の状態であってもよい。たとえば吸気バルブや排気バルブの開弁固着により気筒内での吸気の圧縮が不十分な状態となる、いわゆる圧縮抜けが特定の気筒で発生した場合にも、気筒間の燃焼状態にばらつきが生じてクランク軸２４の回転変動が大きくなる。そのため、こうした圧縮抜けの検出を、上述の内燃機関状態変数を入力とした写像を用いて行うようにすれば、クランク軸２４の回転挙動に与える影響を反映したかたちで圧縮抜けを判定できる。
【０３３２】
・「各実施形態の組み合わせについて」
各実施形態における判定プログラム７４ａの複数が搭載されていており、ＣＰＵ７２が、複数の内燃機関１０の状態を判定してもよい。
【０３３３】
また、第１および第２の実施形態を組み合わせて、車両ＶＣで失火を判定する一方で、センター１２０で失火を判定してもよい。さらに、第２および第３の実施形態を組み合わせて、センター１２０で失火の状態の判定を行う一方で、車両ＶＣで気筒間の空燃比インバランスの状態の判定を行ってもよい。
【０３３４】
・「センターについて」
第２の実施形態では、センター１２０は、失火の状態の判定結果を車両ＶＣに送信しなくてもよい。この場合、センター１２０に判定結果を記憶しておき、研究開発に活かすことができる。
【０３３５】
・「内燃機関について」
上記実施形態では、燃料噴射弁として、燃焼室１８内に燃料を噴射する筒内噴射弁を例示したがこれに限らない。たとえば吸気通路１２に燃料を噴射するポート噴射弁であってもよい。また、たとえばポート噴射弁と筒内噴射弁との双方を備えてもよい。内燃機関としては、火花点火式内燃機関に限らず、たとえば燃料として軽油等を用いる圧縮着火式内燃機関等であってもよい。
【０３３６】
・「車両について」
上記実施形態の車両ＶＣは、駆動系にロックアップクラッチ６２、トルクコンバータ６０、および変速装置６４を有した構成であったが、駆動系の構成の異なる車両であってもよい。
【符号の説明】
【０３３７】
１０…内燃機関、１０Ｈ…シリンダヘッド、１０Ｓ…シリンダブロック、１０Ｗ…ウォータジャケット、１２…吸気通路、１４…スロットルバルブ、１５…ブローバイガス送出路、１６…吸気バルブ、１８…燃焼室、１９Ａ…入口、１９Ｂ…出口、２０…燃料噴射弁、２２…点火装置、２４…クランク軸、２６…排気バルブ、２８…排気通路、３０…三元触媒、３２…ＥＧＲ通路、３３…ＥＧＲバルブ、３４…ＥＧＲバルブ、３６…下流側触媒、３７…低圧燃料ポンプ、３８…燃料タンク、３９…高圧燃料ポンプ、４０…キャニスタ、４２…パージ通路、４４…パージバルブ、４６…吸気側バルブタイミング可変装置、４８…吸気側カム軸、５０…クランクロータ、５２…歯部、５４…欠け歯部、６０…トルクコンバータ、６２…ロックアップクラッチ、６４…変速装置、６６…入力軸、６８…出力軸、６９…駆動輪、７０…制御装置、７２…ＣＰＵ、７４…ＲＯＭ、７４ａ…判定プログラム、７４ｂ…対処プログラム、７４ｃ…温度推定サブプログラム、７６…記憶装置、７６ａ…写像データ、７７…周辺回路、７８…ローカルネットワーク、７９…通信機、８０…クランク角センサ、８１…排気温センサ、８２…エアフローメータ、８３…上流側空燃比センサ、８４…下流側空燃比センサ、８６…車速センサ、８７…吸気側カム角センサ、８８…外気温センサ、８９…水温センサ、９２…ノッキングセンサ、９３…キャニスタ内圧センサ、９４…アルコール濃度センサ、９５…吸気温センサ、９６…吸気圧センサ、９７…大気圧センサ、９８…警告灯、１００…ダイナモメータ、１０２…センサ群、１０４…適合装置、１１０…ネットワーク、１２０…センター、１２２…ＣＰＵ、１２４…ＲＯＭ、１２４ａ…温度推定メインプログラム、１２６…記憶装置、１２６ａ…写像データ、１２７…周辺回路、１２８…ローカルネットワーク、１２９…通信機、２００…機関冷却水循環システム、２１０…第１配管、２１１…ラジエータ、２１２…サーモスタット、２１３…ウォータポンプ、２２０…第２配管、２２１…熱交換器、２５０…分岐部。
【要約】
【課題】機械学習によって学習済みの写像に対して、許容できない範囲のデータが入力層に入力された場合には、写像の出力層から出力される情報として、想定外の情報が出力される虞がある。
【解決手段】ＣＰＵは、取得処理によって取得値を取得する（Ｓ１０）。取得値は、上限ガード値を超えている場合には（Ｓ１１：ＮＯ）、ガード処理によって、上限ガード値と同一値に設定しなおされる（Ｓ１５）。また、取得値は、下限ガード値未満である場合には（Ｓ１２：ＮＯ）、ガード処理によって、下限ガード値と同一値に設定しなおされる（Ｓ１６）。その後、取得値は、写像に入力される。
【選択図】図２【図１】
0006787463.tif 000002
【図２】
0006787463.tif 000003
【図３】
0006787463.tif 000004
【図４】
0006787463.tif 000005
【図５】
0006787463.tif 000006
【図６】
0006787463.tif 000007
【図７】
0006787463.tif 000008
【図８】
0006787463.tif 000009
【図９】
0006787463.tif 000010
【図１０】
0006787463.tif 000011
【図１１】
0006787463.tif 000012
【図１２】
0006787463.tif 000013
【図１３】
0006787463.tif 000014
【図１４】
0006787463.tif 000015
【図１５】
0006787463.tif 000016
【図１６】
0006787463.tif 000017
【図１７】
0006787463.tif 000018
【図１８】
0006787463.tif 000019
【図１９】
0006787463.tif 000020
【図２０】
0006787463.tif 000021
【図２１】
0006787463.tif 000022
【図２２】
0006787463.tif 000023