以下、本発明の好ましい実施の形態を、図面を参照しながら説明する。なお、以下に示す各実施の形態は、本発明の技術的思想を具体化するための方法及び装置を例示するものであって、本発明の技術的思想は下記のものに限定されるわけではない。本発明の技術的思想は、特許請求の範囲に記載された技術的範囲内において種々の変更を加えることができる。
[ガス化溶融炉プラントの構成]
図1は、ガス化溶融炉プラント10の概略構成例を示す模式図である。ガス化溶融炉プラント10は、ガス化炉20及び溶融炉30を含むガス化溶融炉15を備えている。ガス化溶融炉プラント10は、廃棄物を貯留するごみピット40を備えており、ごみ収集車41から排出された廃棄物がごみピット40に収容される。ごみピット40にはごみクレーン42が設けられている。ごみクレーン42は、ごみピット40に貯留された廃棄物を把持して上昇することにより、ごみピット40から定量ずつ廃棄物を取り出す。
ごみピット40の隣には、給じんホッパ50が設けられている。ごみクレーン42は、ごみピット40から引き上げた廃棄物を給じんホッパ50に投入する。給じんホッパ50は、図示しない破砕機を備えており、投入された廃棄物を破砕する。給じんホッパ50の下方には、ベルトコンベアである給じんコンベア51が設けられており、破砕された廃棄物が定量ずつ給じんコンベア51に供給される。給じんコンベア51が廃棄物を搬送し、ガス化炉20に投入する。
ガス化炉20には、底部に流動粒子(例えば、砂)からなる流動床21が設けられている。流動床21の下部には風箱22が設けられており、風箱22内に図示されない送風機により押込空気を導入すると、上向きに流動化空気が噴射され、流動床21の流動粒子及び給じんコンベア51により供給された廃棄物が流動撹拌される。このガス化炉20は、鉄及びアルミニウムなどの金属を未酸化状態で回収するため、流動床21の流動粒子の流動層温度(砂層温度)が、アルミニウムの融点(600℃)以下である約500〜600℃となるように運転される。廃棄物は、流動床21内で空気比0.2〜0.3程度の還元雰囲気の中で熱分解され、熱分解ガス(可燃性ガス)及び未燃固形分(チャー、灰分など)となる。ガス化炉20の炉頂部分には溶融炉30に連通する流路23が設けられており、熱分解ガス及び未燃固形分が当該流路を通って溶融炉30に供給される。
溶融炉30は、ガス化炉20で生成された熱分解ガス及び未燃固形分を約1300〜1400℃の高温で燃焼させる。流路23には燃焼用空気を供給するための一次空気供給口24が設けられており、また酸素富化装置25が接続されている。一次空気供給口24には一次空気供給装置26が設けられ、一次空気供給装置26から供給された燃焼用空気と酸素富化装置25から供給された酸素とが混合され、流路23を通じて溶融炉30に供給される。溶融炉30は、流路23に連通する部分が旋回流溶融炉31になっており、供給された燃焼用空気が図の矢印に示すように強旋回される。また、溶融炉30の下部には、燃焼用空気を供給するための二次空気供給口32が設けられている。二次空気供給口32には二次空気供給装置33が設けられ、二次空気供給装置33から燃焼用空気が溶融炉30に供給される。未燃の熱分解ガスは、燃焼用空気によって高温燃焼する。灰分は溶融し、スラグが生成されるとともに、ダイオキシン類を分解する。溶融スラグは、溶融炉30の下部に設けられたスラグ下流口34より炉外へと回収されることにより有用な資源として利用される。
ボイラ60は、溶融炉30に付属して設置されており、ガス化溶融のプロセスで発生した熱を回収する。ボイラ60は、ガス化溶融のプロセスで発生した熱を利用して水を蒸発させ、図示されない蒸気タービン及び発電機を駆動して電力を生成する。また、溶融炉30には排気用の煙突70が接続されている。溶融炉30と煙突70の間には、図示されないガス冷却装置、排ガス処理装置(バグフィルタ等)、誘引送風機が設置されており、溶融炉30によって生じた排ガスを冷却、除塵して煙突70へと送出する。なお、ここではボイラが設けられたガス化溶融炉プラントについて説明しているが、ボイラが設けられていないガス化溶融炉プラントであってもよい。
上記のようなガス化溶融炉プラント10には、各種のセンサが設けられている。給じんコンベア51には、この給じんコンベア51の搬送速度(以下、「給じん速度」という)を計測するための給じん速度計71が設けられている。風箱22には、風箱22内の圧力(以下、「風箱圧力」という)を計測するための風箱圧力計72と、風箱22に導入される押込空気の流量(以下、「押込空気流量」という)を計測するための押込空気流量計73と、砂層温度を計測するための砂層温度計74とが設けられている。また、ガス化炉20の炉頂部分には、当該炉頂部分の圧力(以下、「ガス化炉内圧」という)を計測するためのガス化炉内圧力計75が設けられており、溶融炉30とボイラ60との接続部分には、当該部分の酸素濃度(以下、「燃焼室出口O2濃度」という)を計測するためのO2濃度計76が設けられている。さらに、一次空気供給口24には一次空気流量計77が設けられ、二次空気供給口32には二次空気流量計78が設けられている。煙突70には、排ガス中のCO濃度を計測するためのCO濃度計79が設けられている。なお、ガス化炉内圧は、ガス化炉20の炉頂部分の圧力に限られず、炉頂部以外のガス化炉内の圧力であってもよい。また、上記のようにボイラ60がない設備においては、溶融炉30の出口にO2濃度計を設け、このO2濃度計によって計測されたO2濃度を、燃焼室出口O2濃度として使用できる。
かかるガス化溶融炉プラント10は、排ガス制御装置100に接続されている(図2参照)。排ガス制御装置100は、上記の給じん速度計71、風箱圧力計72、押込空気流量計73、砂層温度計74、ガス化炉内圧力計75、O2濃度計76、一次空気流量計77、二次空気流量計78、及びCO濃度計79に接続されており、これらの出力変数(以下、「運転データ」という)を受信するようになっている。運転データは、計測値の時系列データである。また、排ガス制御装置100は、一次空気供給装置26及び二次空気供給装置33に接続されている。かかる排ガス制御装置100は、運転データに基づいて一次空気供給装置26及び二次空気供給装置33を駆動し、ガス化溶融炉プラント10の排ガスの状態(燃焼状態)をフィードバック制御する。
[排ガス制御装置の構成]
図2は、実施形態に係る排ガス制御装置100の構成例を示すブロック図である。排ガス制御装置100は、例えばサーバコンピュータ等のコンピュータ200によって実現される。図2に示すように、コンピュータ200は、本体300と、入力部400と、表示部500とを備えている。本体300は、CPU301、ROM302、RAM303、読出装置304、ハードディスク305、入出力インタフェース306、及び画像出力インタフェース307を備えており、CPU301、ROM302、RAM303、読出装置304、ハードディスク305、入出力インタフェース306、及び画像出力インタフェース307は、バスによって接続されている。
CPU301は、RAM303にロードされたコンピュータプログラムを実行する。そして、排ガス制御用のコンピュータプログラムである排ガス制御プログラム310を当該CPU301が実行することにより、コンピュータ200が排ガス制御装置100として機能する。
ROM302は、マスクROM、PROM、EPROM、又はEEPROM等によって構成されており、CPU301に実行されるコンピュータプログラム及びこれに用いるデータ等が記録されている。
RAM303は、SRAM又はDRAM等によって構成されている。RAM303は、ハードディスク305に記録されている排ガス制御プログラム310の読み出しに用いられる。また、RAM303は、CPU301がコンピュータプログラムを実行するときに、CPU301の作業領域として利用される。
ハードディスク305は、オペレーティングシステム及びアプリケーションプログラム等、CPU301に実行させるための種々のコンピュータプログラム及び当該コンピュータプログラムの実行に用いられるデータがインストールされている。排ガス制御プログラム310も、このハードディスク305にインストールされている。
また、ハードディスク305には、上記の各センサから出力された運転データを格納する運転データベース(運転DB)320と、判定モデルの構築に使用する学習データを格納するモデル構築用データベース(モデル構築用DB)330と、機械学習により生成された判定モデルを格納する判定モデルデータベース(判定モデルDB)340と、ガス化溶融炉プラント10の動作条件を格納する動作条件データベース(動作条件DB)350と、出力ログを格納する出力ログデータベース(出力ログDB)360とが設けられている。これらのデータベースは、排ガス制御装置100とは別の装置に設けられてもよい。
入出力インタフェース306は、例えばUSB,IEEE1394,又はRS-232C等のシリアルインタフェース、SCSI,IDE,又は IEEE1284等のパラレルインタフェース、及びD/A変換器、A/D変換器等からなるアナログインタフェース等から構成されている。入出力インタフェース306には、キーボード及びマウスからなる入力部400が接続されており、ユーザが当該入力部400を使用することにより、コンピュータ200にデータを入力することが可能である。また、入出力インタフェース306には、上述した給じん速度計71、風箱圧力計72、押込空気流量計73、砂層温度計74、ガス化炉内圧力計75、O2濃度計76、一次空気流量計77、二次空気流量計78、及びCO濃度計79が接続されており、これらの運転データを受信するように構成されている。さらに、入出力インタフェース306には、一次空気供給装置26及び二次空気供給装置33が接続されており、これらに制御信号を送信できるようになっている。
画像出力インタフェース307は、LCDまたはCRT等で構成された表示部500に接続されており、CPU301から与えられた画像データに応じた映像信号を表示部500に出力するようになっている。表示部500は、入力された映像信号にしたがって、画像(画面)を表示する。
[排ガス制御装置の機能構成]
次に、排ガス制御装置100の動作について説明する。図3は、排ガス制御装置10の機能構成例を示す機能ブロック図である。排ガス制御装置10は、データ前処理機能部110、CO発生判定モデル部120、操作量決定機能部130、及びCO発生判定モデル学習機能部140を備えている。これらの機能部は、CPU301が排ガス制御プログラム310に従って情報処理を実行することにより実現される。
データ前処理機能部110は、データ入力I/F306aが取得した運転データにノイズ除去、スムージングなどの前処理を施し、前処理が施された運転データをCO発生判定モデル部120及び運転DB320に出力する。なお、データ入力I/F306a及びデータ出力I/F306bは、上述の入出力インタフェース306(図2参照)の一部に相当する。
CO発生判定モデル部120は、データ前処理機能部110からの運転データと、判定モデルDB340に格納されたCO発生判定モデル(予測条件の例)と、動作条件DB350に格納された動作条件とに基づいて、溶融炉30から流出する排ガスのCO濃度が上昇するか否かを予測し、予測結果を操作量決定機能部130に出力する。CO発生判定モデル部120は、予測手段の一例である。
操作量決定機能部130は、CO発生判定モデル部120からの予測結果と、動作条件DB350に格納された動作条件とに基づいて、一次空気供給装置26及び二次空気供給装置33の操作量を決定し、決定された操作量を実現するための制御信号をデータ出力I/F306bから一次空気供給装置26及び二次空気供給装置33に送信する。操作量決定機能部130は、設定手段の一例である。
CO発生判定モデル学習機能部140は、運転DB320に格納された運転データと、動作条件DB350に格納された動作条件とに基づいて、溶融炉30から流出する排ガスのCO濃度が上昇するか否かを予測するためのCO発生判定モデルを機械学習によって作成し、判定モデルDB340に格納する。
[排ガス制御装置のメイン動作]
図4は、排ガス制御装置100の動作例を示すフローチャートである。CPU301は排ガス制御プログラム310に従って図4に示す情報処理を実行する。
排ガス制御装置100は、ガス化溶融炉プラント10の通常の制御モード(以下、「通常制御モード」という)での制御処理を行う。かかる通常制御モードの制御処理は各種センサから出力された運転データに基づくPID制御であり、これにより排ガスの状態、つまり燃焼状態が一定に保たれる。
上記の通常制御を実行している間、排ガス制御装置100は、上記の各センサから出力された運転データを受信する(ステップS101)。CPU301は、この運転データに対してノイズ除去、スムージングなどの前処理を実行し(ステップS102:データ前処理機能部110としての処理)、前処理後の運転データを運転DB320に保存する(ステップS103)。
次にCPU301は、CO発生判定モデルを作成するか否かを判定する(ステップS104)。CO発生判定モデルを作成する場合(ステップS104においてYES)、CPU301は、CO発生判定モデル学習処理を実行する(ステップS105:CO発生判定モデル学習機能部140としての処理)。
[CO発生判定モデル学習機能部の構成]
図5は、CO発生判定モデル学習機能部140の具体構成例を示すブロック図である。CO発生判定モデル学習機能部140は、モデル構築用データ作成機能部141、入力変数探索機能部143、及びモデル学習機能部145を備えている。
モデル構築用データ作成機能部141は、運転DB320に格納された運転データと、動作条件DB350に格納された動作条件とに基づいて、CO発生判定モデルの構築に使用するためのモデル構築用データ(すなわち学習データ)を作成し、モデル構築用DB330に格納する。
入力変数探索機能部143は、モデル構築用DB330に格納されたモデル構築用データと、動作条件DB350に格納された動作条件とに基づいて、CO発生判定モデルに適した入力変数をステップワイズな変数探索法によって探索する。
モデル学習機能部145は、モデル構築用DB330に格納されたモデル構築用データと、入力変数探索機能部143において探索された入力変数と、動作条件DB350に格納された動作条件とに基づく機械学習によってCO発生判定モデルを作成し、判定モデルDB340に格納する。
[CO発生判定モデル学習処理]
図6は、CO発生判定モデル学習処理(ステップS105)の手順を示すフローチャートである。CPU301は、同図に示すCO発生判定モデル学習処理を実行することによりCO発生判定モデル学習機能部140(図5参照)として機能する。まず、CPU301は、運転DB320から運転データを読み出す(ステップS201)。次に、CPU301は、取得された運転データを用いてモデル構築用データ作成処理を実行する(ステップS202:モデル構築用データ作成機能部141としての処理)。
図7は、モデル構築用データ作成処理(ステップS202)の手順を示すフローチャートである。CPU301は、同図に示すモデル構築用データ作成処理を実行することによってモデル構築用データ作成機能部141(図5参照)として機能する。このモデル構築用データ作成処理では、CO濃度の上昇を予測するためのCO発生判定モデルを機械学習するためのモデル構築用データが作成される。モデル構築用データには、入力変数データと出力変数データとが含まれる。
モデル構築用データの作成について詳しく説明する。図8は、ある期間における燃焼室出口O2濃度、ガス化炉内圧及びCO濃度などを示すグラフである。図8において、横軸は時間を表し、縦軸は燃焼室出口O2濃度、ガス化炉内圧及びCO濃度などのレベルを表す。このグラフでは、CO濃度が初期には低いが、中期に急激に上昇し、暫く高レベルを維持した後、下降している。また、CO濃度の急激な上昇の前には、燃焼室出口O2濃度が急激に下降するとともに、ガス化炉内圧が上昇している。
このような現象は次のように説明できる。図1に示すようにガス化炉20には給じんコンベア51から廃棄物が連続して投入されるが、この投入量は時間当たり一定となるように平準化されている。しかし、大きな塊のごみが給じんホッパ50から給じんコンベア51に投下され、ガス化炉20に投入される廃棄物の量が突発的に増大することがある。ガス化炉20の内部は通常負圧とされているが、一定容積のガス化炉20に大きな廃棄物の塊が投入されると一時的にガス化炉20の内部圧力が上昇する。また、このような廃棄物の塊が投入されることでガス化炉20内の廃棄物の量が増大すると、その燃焼のため炉内のO2濃度が低下する。
かかる知見に基づき、排ガス制御装置100は、運転データに含まれる燃焼室出口O2濃度及びガス化炉内圧などの計測値、並びにこれらの計測値から算出される値などを、CO濃度の上昇を予測するための入力変数とする。
図7の説明に戻る。まず、CPU301は、運転データに含まれる燃焼室出口O2濃度及びガス化炉内圧などの計測値の時系列データに対して平滑化処理を実行する(ステップS301)。平滑化処理は、例えば下記数式1に基づいて行われる。ここで、tは時間を表し、aはt−1における値とtにおける値との合成割合を表す。
次に、CPU301は、平滑化が施された燃焼室出口O2濃度及びガス化炉内圧などの計測値の時系列データに対して一次変換処理を実行する(ステップS302)。
一次変換処理では、例えば燃焼室出口O2濃度の時系列データからO2濃度時間変化率が算出される。O2濃度時間変化率の算出は、例えば下記数式2に基づいて行われる。ここで、tは時間を表し、oxは燃焼室出口O2濃度を表し、oxrはO2濃度時間変化率を表す。
また、一次変換処理では、例えばO2濃度時間変化率の標準偏差も算出される。標準偏差の算出は、例えば下記数式3に基づいて行われる。ここで、oxrはO2濃度時間変化率を表し、AVEは平均値を表し、Kはデータの数を表す。
その他、一次変換処理では、例えば、燃焼室出口O2濃度の最小値・最大値、燃焼室出口O2濃度の時間変化率の最小値、閾値未満の燃焼室出口O2濃度の時間積分値、閾値以上の燃焼室出口O2濃度の時間積分値、ガス化炉内圧の最大値、ガス化炉内圧の時間変化率の最大値、閾値以上のガス化炉内圧の時間積分値、押込空気流量の時間変化率の最小値、砂層温度、砂層温度の時間上昇量、砂層温度の時間変化量の時間積分値、風箱圧力、風箱圧力の時間変化率の最大値、風箱圧力の平均値、給じん速度の時間変化率の平均値などを算出してもよい。
次に、CPU301は、二次変換処理を実行する(ステップS303)。二次変換処理では、以下に説明する第1合成変数と第2合成変数とが算出される。
第1合成変数は、燃焼室出口O2濃度が減少するときに0より大きく1より小さい値になる第1補正係数を、燃焼室出口O2濃度に乗じた変数である。第1補正係数は、時間減少率が大きくなるほど0に近づく。O2濃度時間減少率が大きくなるとは、O2濃度時間変化率が負の側に大きくなること、すなわち、O2濃度時間変化率が負であって且つその絶対値が大きくなることをいう。
第1合成変数は、例えば下記数式4で表される。ここで、cbv1は第1合成変数を表し、oxは燃焼室出口O2濃度を表し、oxrはO2濃度時間変化率を表し、σoxrはO2濃度時間変化率の標準偏差を表し、βは第1調整変数を表し、(oxr×β/σoxr+1)は第1補正係数を表す。
上記数式4に示すように、第1補正係数は、O2濃度時間変化率を含む項に正のオフセット値を加えた数である。具体的には、第1補正係数は、O2濃度時間変化率に第1調整変数を乗じ、標準偏差で割った項に1を加えた数である。これにより、第1補正係数は、燃焼室出口O2濃度が減少するときに0より大きく1より小さい値になると共に、O2濃度時間変化率が負の側に大きくなるほど0に近づく。
このようにして得られる第1合成変数は、図8に示すように燃焼室出口O2濃度の下降よりも急峻に下降する。言い換えると、第1合成変数の変化の位相は、燃焼室出口O2濃度の変化よりも進んだものとなる。このため、第1合成変数は、CO濃度上昇を早期に予測するための有益な入力変数となる。
第2合成変数は、ガス化炉内圧が閾値を超えた場合に0より大きく1より小さい値になる第2補正係数を、第1合成変数に乗じた変数である。第2合成変数は、例えば下記数式5で表される。ここで、cbv2は第2合成変数を表し、p^(※pにサーカムフレックス)は閾値関数を表し、γは第2調整変数を表し、1/(p^×γ+1)は第2補正係数を表す。
閾値関数は、例えば下記数式6及び図9で表される。ここで、pはガス化炉内圧を表す。閾値関数は、ガス化炉内圧が閾値未満で0、閾値以上で正の値になる関数である。本例では、閾値関数は、ガス化炉内圧が正の閾値を超えるとガス化炉内圧そのものとなるが、これに限らず、固定値となってもよい。
上記数式5及び数式6に示すように、第2補正係数は、ガス化炉内圧が閾値未満で0、閾値以上で正の値になる閾値関数に第2調整変数を乗じた項に1を加えた数の逆数である。これにより、第2補正係数は、ガス化炉内圧が閾値を超えた場合に0より大きく1より小さい値になる。
第2合成変数は、ガス化炉内圧が閾値未満で0、閾値以上で正の値になる閾値関数に第2調整変数を乗じた項に1を加えた数で、第1合成変数を割った変数とも言える。
このようにして得られる第2合成変数は、図8に示すように、燃焼室出口O2濃度の下降よりも、更には第1合成変数の下降よりも急峻に下降する。言い換えると、第2合成変数の変化の位相は、燃焼室出口O2濃度の変化よりも、更には第1合成変数よりも進んだものとなる。このため、第2合成変数は、CO濃度上昇を早期に予測するための有益な入力変数となる。
次に、CPU301は、入出力変数データ作成処理を実行する(ステップS304)。図10は、入出力変数データ作成処理の手順例を示すフローチャートである。
まず、CPU301は、モデル構築用データのインデックスnを初期化し(ステップS401)、時刻インデックスtを初期化する(ステップS402)。次に、CPU301は、時刻t−T1(但し、T1>0)から時刻tまでの入力期間(図8参照)の運転データに基づいて、時刻tの入力変数データを作成する(ステップS403)。入力変数データは、例えば、燃焼室出口O2濃度及びガス化炉内圧などの計測値に加えて、上記S302の一次変換処理で生成された燃焼室出口O2濃度の時間変化率、時間積分値及び標準偏差など、上記S303の二次変換処理で生成された第1合成変数及び第2合成変数などから生成される。
次に、CPU301は、出力変数データを作成する。図8に示すように、COの上昇は、入力期間よりも後の時刻t+T2から時刻t+T3(但し、T3>T2>0)までの出力期間に現れる。よって、この出力期間のCO濃度に基づいて出力変数データは作成される。具体的には、CPU301は、出力期間の運転データから、CO濃度の最大値を取得し(ステップS404)、取得されたCO濃度の最大値が閾値C1以上であるか否かを判別する(ステップS405)。
CO濃度の最大値が閾値C1以上である場合には(ステップS405においてYES)、CPU301は、時刻tの出力変数データをCO濃度が上昇したことを表す値「1」に決定する(ステップS406)。一方、CO濃度の最大値が閾値C1未満である場合には(ステップS405においてNO)、CPU301は、時刻tの出力変数データをCO濃度が上昇していないことを表す値「0」に決定する(ステップS407)。
次に、CPU301は、得られた入力変数データと出力変数データとを結合してモデル構築用データnを作成する(ステップS408)。
さらに、CPU301は、時刻tが所定の最大値Tに達したか否かを判定し(ステップS409)、時刻tが最大値T未満であれば(ステップS409においてNO)、時刻tをインクリメントし(ステップS410)、ステップS403へ処理を戻す。他方、時刻tが最大値Tに達している場合は(ステップS409においてYES)、CPU301は、インデックスnが所定の最大値Nに達したか否かを判定し(ステップS411)、nが最大値N未満であれば(ステップS411においてNO)、nをインクリメントして(ステップS412)、ステップS402に処理を戻す。nが最大値Nに到達している場合は(ステップS411においてYES)、CPU301は、データセット作成処理を終了する。
なお、CO発生判定モデルを評価するためのテストデータも、モデル構築用データと同様に作成される。
再び図7を参照する。入出力変数データ作成処理(ステップS304)を終了すると、CPU301は、モデル構築用データ作成処理を終了する。
再び図6を参照する。モデル構築用データ作成処理(ステップS202)を終了すると、CPU301は、作成したモデル構築用データをモデル構築用DB330に格納する(ステップS203)。
次に、CPU301は、モデル入力変数探索処理を実行する(S204:入力変数探索機能部143(図5参照)としての処理)。本実施形態のモデル入力変数探索処理では、上記第1合成変数に含まれる第1調整変数(上記数式4におけるβ)と、上記第2合成変数に含まれる第2調整変数(上記数式5におけるγ)とが探索の対象とを、複数条件に振って作成した変数候補の中から、対象データに最も適合する変数の組合せを選択する。これに限らず、他の入力変数が探索の対象となってもよい。モデル入力変数探索処理の詳細は後述する。
次に、CPU301は、モデル学習処理を実行する(S205:モデル学習機能部145(図5参照)としての処理)。
図11及び図12は、モデル学習処理の手順を示すフローチャートである。CPU301は、同図に示すモデル学習処理を実行することによって上記モデル学習機能部145として機能する。図11に示すステップS501〜S509によりCO発生判定モデルが作成され、図12に示すステップS511〜S521によりCO発生判定モデルが評価される。
まず、CPU301は、モデル構築用データセットのインデックスmを初期化する(ステップS501)。ここで、モデル構築用データセットとは、出力変数データがCOガスの発生があることを示す、つまり「1」であるモデル構築用データと、出力変数データがCOガスの発生がないことを示す、つまり「0」であるモデル構築用データとを所定の比率(以下、「データ比率」という)で含むデータセットのことである。ここでは、データ比率がそれぞれ異なる複数のモデル構築用データセットが定義される。例えば、あるモデル構築用データセットにおけるデータ比率は「1」(つまり、出力変数データが「1」の学習データと「0」の学習データとの比率が1:1)であり、他の1つのモデル構築用データセットにおけるデータ比率は「2」(つまり、出力変数データが「1」の学習データと「0」の学習データとの比率が1:2)である。
次に、CPU301は、データ比率のインデックスlを初期化する(ステップS502)。データ比率R(l)は、パラメータセットとして定義され、例えば、R(1)=1,R(2)=2,R(3)=5,R(4)=10の4つの値が予め設定されている。
次に、CPU301は、出力変数が「1」のモデル構築用データを学習DB330から所定数取得する(ステップS503)。また、CPU301は、出力変数が「0」のモデル構築用データを、データ比率R(l)に従った数だけ学習DB330から取得する(ステップS504)。例えば、l=1のときは、出力変数が「1」のモデル構築用データと同数だけ、出力変数が「0」のモデル構築用データが取得され、l=3のときは、出力変数が「1」のモデル構築用データの3倍の数だけ、出力変数が「0」のモデル構築用データが取得される。
次に、CPU301は、取得されたモデル構築用データセットmを用いて、決定木学習によりCO発生判定モデルを生成する(ステップS505)。この決定木による学習には、ID3、C4.5、CART等の公知の学習アルゴリズムを採用できる。生成されたCO発生判定モデルは、運転データに関する条件と、CO濃度の上昇の有無を示す結果とを有するIF−THENルールである。例えば、条件が「燃焼室出口O2濃度が閾値D1以下であり、且つ、ガス化炉内圧が閾値P1以上」であり、結果が「1(CO濃度の上昇有り)」のようなルールとなる。なお、結果が「0(CO濃度の上昇無し)」のCO発生判定モデルは破棄され、結果が「1」のCO発生判定モデルのみが採用される。
CPU301は、インデックスlが所定の最大値Lに達したか否かを判定し(ステップS506)、lが最大値L未満であれば(ステップS506においてNO)、lをインクリメントし(ステップS507)、ステップS503へ処理を戻す。他方、lが最大値Lに達している場合は(ステップS506においてYES)、CPU301は、インデックスmが所定の最大値Mに達したか否かを判定し(ステップS508)、mが最大値M未満であれば(ステップS508においてNO)、mをインクリメントして(ステップS509)、ステップS502に処理を戻す。mが最大値Mに到達している場合は(ステップS508においてYES)、CPU301は、図12に示すステップS511〜S521に移る。
次に、CPU301は、CO発生判定モデルのインデックスi及びカウンタc(i)を初期化し(ステップS511)、テストデータのインデックスjを初期化する(ステップS512)。
次に、CPU301は、テストデータjに対してCO発生判定モデルiを適用し、CO発生判定モデルiの評価を行う(ステップS513)。CPU301は、評価結果が「適合」の場合、つまりテストデータjにCO発生判定モデルiが合致した場合(ステップS514においてYES)、カウンタc(i)をインクリメントし(ステップS515)、ステップS516へと処理を移す。一方、評価結果が「不適合」の場合、つまりテストデータjにCO発生判定モデルiが合致しない場合(ステップS514においてNO)、CPU301は、そのまま処理をステップS516へ移す。
CPU301は、インデックスjが所定の最大値Jに達したか否かを判定し(ステップS516)、jが最大値J未満であれば(ステップS516においてNO)、jをインクリメントし(ステップS517)、ステップS513へ処理を戻す。他方、jが最大値Jに達している場合は(ステップS516においてYES)、CPU301は、適合率(Precision)及び再現率(Recall)を計算し、F値(F-measure)を計算する(ステップS518)。ここで、支持度は式(1)により与えられ、信頼度は式(2)により与えられ、F値は式(3)により与えられる。
適合率(Precision)=(a)CO判定モデルによる判定結果が「ピークあり(1)」かつ、データのラベルも「1」のデータ数÷(b)CO判定モデルによる判定結果が「ピークあり(1)」となったデータ数 …(1)
再現率(Recall)=(a)CO判定モデルによる判定結果が「ピークあり(1)」かつ、データのラベルも「1」のデータ数÷(c)テストデータのラベルが「ピークあり(1)」となるデータ数 …(2)
F値(F-measure)=2×適合率×再現率/(適合率+再現率) …(3)
なお、適合率(Precision)、再現率(Recall)及びF値(F-measure)については、後述する数式7〜9においても説明する。
CPU301は、インデックスiが所定の最大値Iに達したか否かを判定し(ステップS519)、iが最大値I未満であれば(ステップS519においてNO)、iをインクリメントし(ステップS520)、ステップS512へ処理を戻す。他方、iが最大値Iに達している場合は(ステップS519においてYES)、CPU301は、F値(F-measure)が所定の閾値以上であるCO発生判定モデルを、CO発生の予測に使用するCO発生判定モデルとして選別し(ステップS521)、モデル学習処理を終了する。
再び図6を参照する。モデル学習処理(ステップS205)を終了すると、CPU301は、学習結果(すなわち、選別されたCO発生判定モデル)を判定モデルDB340に保存し(ステップS206)、CO発生判定モデル学習処理を終了する。
[排ガス制御装置のメイン動作の続き]
再び図4を参照する。CO発生判定モデル学習処理を終了後、CPU301は、ステップS101に処理を戻す。ステップS104においてCO発生判定モデルを作成しない場合(ステップS104においてNO)、CPU301は、前回の制御処理(つまり、制御信号の送信)を実行した後、所定の制御周期が経過したか否かを判定する(ステップS106)。制御周期が経過していない場合(ステップS106においてNO)、CPU301は、ステップS101に処理を戻す。
他方、制御周期が経過している場合(ステップS106においてYES)、CPU301は、CO発生予測処理を実行する(ステップS107:CO発生判定モデル部120(図2参照)としての処理)。
図13は、CO発生予測処理の手順例を示すフローチャートである。まず、CPU301は、現在時刻t’からT1遡った範囲の入力期間(つまり、時刻t’−T1から時刻t’までの期間)における運転データから入力変数データを作成する(ステップS601)。入力変数データは、例えば、燃焼室出口O2濃度及びガス化炉内圧などの計測値に加え、燃焼室出口O2濃度の時間変化率、時間積分値、第1合成変数及び第2合成変数などから生成される。
次に、CPU301は、作成された入力変数データに対してCO発生判定モデルを評価する(ステップS602)。この処理では、入力変数データが、CO発生判定モデルの条件に適合するか否かが判定される。次に、CPU301は、入力期間において燃焼室出口O2濃度が極小値を取ったか否か(つまり、燃焼室出口O2濃度の時間変化のグラフが谷状に変化したか否か)を評価する(ステップS603)。この評価には、燃焼室出口O2濃度の最小値、時間変化率及び時間積分値などが利用される。この評価処理の後、CPU301はCO発生予測処理を終了する。
再び図4を参照する。CPU301は、CO発生予測処理の結果に基づいて、制御操作決定処理を実行する(ステップS108:操作量決定機能部130(図2参照)としての処理)。
図14は、制御操作決定処理の手順例を示すフローチャートである。まず、CPU301は、CO発生予測処理において、入力変数データがCO発生判定モデルの条件に適合すると評価されたか否かを判定する(ステップS701)。入力変数データがCO発生判定モデルの条件に適合すると評価された場合(ステップS701においてYES)、CO濃度の上昇が予測される。そこで、CPU301は、CO濃度の上昇を抑制するための操作(以下、「CO発生抑制操作」という)を実行するか否かを示す操作実行判定フラグを「1」にセットする(ステップS702)。ここで、操作実行判定フラグが「1」にセットされているとき、CO濃度の上昇を抑制するためのモード(以下、「CO発生抑制モード」という)が設定され、CO発生抑制操作が実行される。他方、操作実行判定フラグが「0」にセットされているとき、CO発生抑制操作は実行されない。入力変数データがCO発生判定モデルの条件に適合しない場合(ステップS701においてNO)、CO濃度の上昇が予測されないため、CPU301は、操作実行判定フラグを「0」にセットする(ステップS703)。
後述するように、CO発生抑制モードでは、高濃度のNOxが発生しない程度に一次及び二次空気の供給量設定値が通常制御モードのときよりも大きくされる。ところで、排ガス制御装置100では、制御モードの切り替えがバンプレスに行われる。つまり、制御モードが切り替えられる際、操作量がそのまま引き継がれる。しかし、CO発生抑制モードから通常制御モードにバンプレスに切り替えられると、一次及び二次空気の操作量が高値のまま引き継がれるため、一次及び二次空気が過剰に供給されてNOxの排出量が増大するおそれがある。そこで、CO発生抑制モードから通常制御モードへ移行する際に切替待機期間を設け、この切替待機期間中に操作量を通常制御モードの平均的な値にすることで、通常制御モードへ円滑に切り替えるようにする。切替待機期間は、ガス化溶融炉プラント10の制御系の時定数に応じて定められる。
CO発生判定モデルによってCO濃度の上昇が予測される期間においては、燃焼室出口O2濃度が極小値を取るという特徴がある。そこで、この燃焼室出口O2濃度の特徴を捉えることで、CO濃度の上昇が予測されなくなった直後を特定し、切替待機期間を設定する。具体的には、CPU301は、CO発生予測処理において、燃焼室出口O2濃度が極小値を取ったと評価されたか否かを判定する(ステップS704)。燃焼室出口O2濃度が極小値を取ったと評価された場合(ステップS704においてYES)、CPU301は、切替待機フラグを「1」にセットする(ステップS705)。切替待機フラグは、「1」で切替待機期間であることを示し、「0」で切替待機期間外であることを示す。また、燃焼室出口O2濃度が極小値を取ったと評価されていない場合(ステップS704においてNO)、CO発生抑制モードが終了してからある程度長い時間が経過していると考えられる。この場合、CPU301は、切替待機フラグを「0」にセットする(ステップS706)。
切替待機フラグが「0」又は「1」にセットされると、CPU301は、操作実行判定フラグが「1」にセットされているか否かを判定する(ステップS707)。操作実行判定フラグが「1」にセットされている場合(ステップS707においてYES)、CPU301は、CO濃度の上昇を抑制するための一次及び二次空気の操作量を決定する(ステップS708)。
ここで、操作量の決定について説明する。操作量は、空気量決定関数f(x)を用いて決定される。空気量決定関数f(x)は、第1基準値未満の燃焼室出口O2濃度の時間積分値を引数xとし、一次及び二次空気の供給量設定値を出力とする関数であり、運転員の経験等に基づいて作成され、予めハードディスク305に記憶されている。図15は、空気量決定関数f(x)の一例を示すグラフである。図15において、縦軸は一次及び二次空気の供給量設定値を表し、横軸は引数xを表す。図15に示すように、空気量決定関数f(x)は、xがある値以下の範囲においてxに対して概ね直線的に増加し、xがある値より大きい範囲において一定の値をとる関数である。CO濃度の上昇を抑制するためには、予測されるCO濃度のピークの大きさに対して適切な量の空気を溶融炉30に供給することが重要である。供給する空気が不足すればCO濃度抑制効果が低くなり、供給する空気が過剰であればNOxの発生量が増加してしまう。CO濃度のピークの大きさは、ピークが発生する直前における燃焼室出口O2濃度の不足具合と強い正の相関を示すことが知られている。このため、燃焼室出口O2濃度の不足量を第1基準値未満のO2ガスの濃度の時間積分値として取得し、これに基づいて一次及び二次空気の供給量設定値を決定する。
空気量決定関数f(x)として、上記のグラフにおける複数の節点の座標値(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)、(x5,y5)がハードディスク305に記憶されている。一次及び二次空気の供給量設定値を決定する場合、CPU301は、これらの節点間を線形補完し、引数xに対応する一次及び二次空気の供給量設定値を導出する。一次及び二次空気の供給量設定値が決定されると、CPU301は、制御操作決定処理を終了する。
他方、操作実行判定フラグが「0」にセットされている場合(ステップS707においてNO)、CPU301は、切替待機フラグが「1」にセットされているか否かを判定する(ステップS709)。切替待機フラグが「1」にセットされていれば(ステップS709においてYES)、切替待機期間中であり、切替待機フラグが「0」にセットされていれば(ステップS709においてNO)、切替待機期間中ではない。よって、CPU301は、切替待機フラグが「0」にセットされている場合(ステップS709においてNO)、そのまま制御操作決定処理を終了し、切替待機フラグが「1」にセットされている場合(ステップS709においてNO)、切替待機期間が経過したか否かを判定する(ステップS710)。具体的には、CPU301は、切替待機期間の開始時点(つまり、切替待機期間が「1」の状態であり、且つ、操作実行判定フラグが「1」から「0」に切り替わった時点)から予め設定された切替待機期間を経過したか否かを判定する。切替待機期間が経過していない場合(ステップS710においてNO)、CPU301は、通常制御モードにおける一次及び二次空気供給量の平均値を、供給量設定値として決定する(ステップS711)。この供給量設定値が、切替待機期間における操作量となる。その後、CPU301は、制御操作決定処理を終了する。切替待機期間が経過した場合(ステップS710においてYES)、CPU301は、操作量を決定することなく制御操作決定処理を終了する。これにより、通常制御モードへバンプレスに切り替わる。最後に決定された操作量は一次及び二次空気供給量の平均値であり、これが通常制御モードに引き継がれるため、通常制御モードにおいて適切な量の一次及び二次空気が供給され、NOxの発生が防止される。
再び図4を参照する。次にCPU301は、CO発生抑制操作を実行するか否かを判定する(ステップS109)。この処理では、制御操作決定処理において操作量が決定された場合には、その操作量によってCO発生抑制操作を実行すると判定され、操作量が決定されていない場合には、CO発生抑制操作を実行しないと判定される。CO発生抑制操作を実行すると判定された場合(ステップS109においてYES)、CPU301は、制御操作決定処理において決定された操作量によって、一次空気供給装置26及び二次空気供給装置33を操作するよう制御信号を送信し(ステップS110)、ハードディスク305に処理結果を保存する(ステップS111)。
処理結果を保存した場合、又は、CO発生抑制操作を実行しないと判定された場合には(ステップS109においてNO)、CPU301は、排ガス制御を終了するか否かを判定する(ステップS112)。排ガス制御を終了しない場合には(ステップS112においてNO)、CPU301は、ステップS101へ処理を戻す。例えば運転員から終了指示が与えられ、排ガス制御を終了する場合には(ステップS112においてYES)、CPU301は排ガス制御の動作を終了する。
以上のようなCO発生抑制モードでの制御動作により、CO濃度上昇が事前に予測され、CO濃度上昇を抑制するように一次及び二次空気が溶融炉30に供給される。よって運転員の技量に頼ることなく、自動的にプラント単体でのCOガスの排出量を抑制できる。
[モデル入力変数探索処理]
以下、上記図6のモデル入力変数探索処理(ステップS204)について説明する。図16及び図17は、モデル入力変数探索処理の手順例を示すフローチャートである。CPU301は、同図に示すモデル入力変数探索処理を実行することによって上記入力変数探索機能部143(図5参照)として機能する。
本実施形態のモデル入力変数探索処理では、モデル構築用データに含まれる入力変数のうち、第1合成変数に含まれる第1調整変数β(上記数式4を参照)と、第2合成変数に含まれる第2調整変数γ(上記数式5を参照)とについて、CO濃度上昇の予測精度が高くなる変数組み合わせをステップワイズ変数選択法により選択する。
まず、CPU301は、モデル構築用データをN分割し(ステップS801)、N種類のデータセットを作成する(ステップS802)。図18に示すように、それぞれのデータセットでは、N分割したデータのうち、1つが第1テストデータ、もう1つが第2テストデータ、残りが学習データがとされる。
次に、CPU301は、変数インデックスi、選択変数ベクトルvi、変数候補ベクトルwi、暫定最良適合度f1’、暫定選択変数v’を初期化する(ステップS803)。ここで、変数インデックスiは0で初期化される。暫定最良適合度f1’は、例えば予測結果の評価尺度を表すF値であり、0で初期化される。
図19に示すように、変数候補ベクトルwiは変数候補を保持するベクトルであり、選択変数ベクトルviは、変数候補ベクトルwから選択された変数を保持するベクトルである。変数候補ベクトルwiは、全ての変数候補を代入する形で初期化され、選択変数ベクトルviは、空集合で初期化される。
次に、CPU301は、変数インデックスj、暫定最良適合度f2’を初期化する(ステップS804)。ここで、変数インデックスjは0で初期化される。暫定最良適合度f2’は、例えば予測結果の評価尺度を表すF値であり、0で初期化される。
次に、CPU301は、選択変数ベクトルviのi番目に、変数候補ベクトルwiのj番目の変数候補を追加したものを、vi’とする(ステップS805)。次に、CPU301は、データセットインデックスnを初期化する(ステップS806)。
次に、CPU301は、n番目のデータセットの学習データ及び第1テストデータからvi’の部分を抽出し(ステップS807)、抽出した学習データを使用してCO発生判定モデルを学習し(ステップS808)、抽出した第1テストデータを使用して学習結果の評価指標f2,nを計算する(ステップS809)。CO発生判定モデルの学習は、上記モデル学習処理(図11及び図12参照)と同様の手順で行われる。
学習結果の評価指標f2,nは、適合率(precision)及び再現率(recall)に基づいて計算される。適合率(precision)は下記数式7で表され、再現率(recall)は下記数式8で表され、評価指標f2,nは下記数式9で表される。mは、1又は2の値をとる適合度IDであり、本ステップではm=2である。
ここで、d11は、テストデータにおいてCO発生判定モデルの「CO発生」予測結果と運転での「CO発生」観測結果とが一致した数である。d10は、テストデータにおいてCO発生判定モデルの「CO発生」予測結果に対して運転では「CO非発生」観測結果が得られた数である。d01は、テストデータにおいてCO発生判定モデルの「CO非発生」予測結果に対して運転では「CO発生」観測結果が得られた数である。運転での観測結果は、出力変数データの値に対応する。
次に、CPU301は、データセットインデックスnが所定の最大値Nに達したか否かを判定し(ステップS810)、nが最大値N未満であれば(ステップS810においてYES)、nをインクリメントし(ステップS811)、ステップS807に戻す。
他方、nが最大値に達した場合は(ステップS810においてNO)、CPU301は、各データセットにおける評価指標の平均f2を計算する(ステップS812)。評価指標の平均f2は、下記数式10で表される。ここで、mは、1又は2の値をとる適合度IDであり、本ステップではm=2である。
次に、CPU301は、算出した評価指標の平均f2が暫定最良適合度f2’を超えているか否かを判定する(ステップS813)。評価指標の平均f2が暫定最良適合度f2’を超えている場合(ステップS813においてYES)、CPU301は、暫定最良適合度f2’及び暫定選択変数v’を更新する(ステップS814)。具体的には、評価指標の平均f2を新たな暫定最良適合度f2’とし、変数候補ベクトルwiのj番目の変数候補を新たな暫定選択変数v’とする。
他方、評価指標の平均f2が暫定最良適合度f2’を超えていない場合(ステップS813においてNO)、又は、暫定最良適合度f2’及び暫定選択変数v’の更新(ステップS814)が完了した後、CPU301は、変数インデックスjが所定の最大値Iから変数インデックスiを引いた差分I−iに達したか否かを判定する(ステップS815)。jが差分I−i未満であれば(ステップS815においてYES)、CPU301は、jをインクリメントし(ステップS816)、ステップS805に戻す。
他方、jが差分I−iに達した場合は(ステップS815においてNO)、CPU301は、選択変数ベクトルvi及び変数候補ベクトルwjを更新する(ステップS817)。具体的には、選択変数ベクトルviのi番目に暫定選択変数v’を追加するとともに、変数候補ベクトルwjから暫定選択変数v’の要素を削除する。次に、CPU301は、データセットインデックスnを初期化する(ステップS818)。
次に、CPU301は、n番目のデータセットの学習データ及び第2テストデータからviの部分を抽出し(ステップS819)、抽出した学習データを使用してCO発生判定モデルを学習し(ステップS820)、抽出した第2テストデータを使用して学習結果の評価指標f1,nを計算する(ステップS821)。評価指標f1,nは、上記数式7〜数式9で表される(本ステップではm=1である)。
次に、CPU301は、データセットインデックスnが所定の最大値Nに達したか否かを判定し(ステップS822)、nが最大値N未満であれば(ステップS822においてYES)、nをインクリメントし(ステップS823)、ステップS819に戻す。他方、nが最大値に達した場合は(ステップS822においてNO)、CPU301は、各データセットにおける評価指標の平均f1を計算する(ステップS824)。平均f1は、上記数式10で表される(本ステップではm=1である)。
これらのステップS818〜S824は、上記ステップS806〜S812と同様である。ステップS806〜S812では第1テストデータを用いるのに対して、ステップS818〜S824では第2テストデータを用いる点が異なる。2種類のテストデータで評価する理由は、評価の公平性を担保するためである。1種類のテストデータのみであると、暫定選択変数v’の選択がそのテストデータにフィッティングされてしまうおそれがあるため、2種類のテストデータで評価している。
次に、CPU301は、算出した評価指標の平均f1が暫定最良適合度f1’を超えているか否かを判定する(ステップS825)。
評価指標の平均f1が暫定最良適合度f1’を超えている場合(ステップS825においてYES)、CPU301は、評価指標の平均f1を新たな暫定最良適合度f1’として更新し(ステップS827)、続いて、変数インデックスiが所定の最大値Iに達したか否かを判定する(ステップS828)。iが最大値I未満であれば(ステップS828においてYES)、CPU301は、iをインクリメントし(ステップS829)、ステップS804に戻す。
評価指標の平均f1が暫定最良適合度f1’を超えていない場合(ステップS825においてNO)、又は、変数インデックスiが最大値Iに到達した場合(ステップS828においてNO)、CPU301は、選択変数ベクトルviを最終的な選択変数に決定し(S826)、モデル入力変数探索処理を終了する。以上のようにして、CO濃度上昇の予測精度が高い変数組み合わせが得られる。
[その他]
上記実施形態では、入力変数として、燃焼室出口O2濃度及びガス化炉内圧などの計測値に加え、燃焼室出口O2濃度の時間変化率、時間積分値、第1合成変数及び第2合成変数などを用いる態様について説明したが、これに限定されるものではない。例えば、これらの入力変数から一部(例えば、第1合成変数又は第2合成変数)が省略されてもよいし、これらの入力変数に他の入力変数が付加されてもよい。また、例えば、第1合成変数及び第2合成変数の一方又は両方のみが入力変数とされてもよい。
また、上記実施形態では、CO発生判定モデルを機械学習によって生成する構成について述べたが、これに限定されるものではない。運転員等が経験に基づいてCO発生判定モデルを作成してもよい。また、上記実施形態では、決定木学習によってCO発生判定モデルを生成する構成としたが、決定木以外の機械学習、例えばサポートベクターマシーン(SVM)等によってCO発生判定モデルを生成することもできる。
また、上記実施形態では、単一のコンピュータ200によって排ガス制御プログラム310の全ての処理が実行される構成について述べたが、これに限定されるものではなく、排ガス制御プログラム310と同様の処理を、複数のコンピュータに分散して実行する分散システムとすることも可能である。