説明

行列生成プログラム、方法及び装置、並びにプラント制御プログラム、方法及び装置

【課題】モデル予測制御においてプラントに対する入力を高速に算出する。
【解決手段】モデル予測制御で解くべき方程式群を代数的簡略化法を用いて、係数行列とプラントに対する最適入力ベクトルとの積が目標値及び出力状態の関数ベクトルに等しくなるように変形することで、実際のプラントでは高速に最適入力ベクトルを算出することができるため、速いダイナミクスを持つ機械系に対しても有効なほど高速に計算可能で、且つ安定的に解を求めることができるようになる。さらに、さらにプラントの状態の次元が仮に大きくなるような場合においても、大幅な計算量の増大を抑えることが可能となる

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、プラントの制御技術に関する。
【背景技術】
【0002】
モデル予測制御とは、各時刻において有限時間未来までの応答を最適化することによって制御対象への入力を決定する制御方法である。非定常目標値への追従制御を実現できる制御技術として注目されおり、飽和などの制約条件も扱えるといった長所もある。
【0003】
従来は主として線形系を対象にした研究が行われてきたが、近年は非線形系への適用も盛んに研究されている。しかし現在のところ、現場では非線形な問題も線形な問題に簡単化して適用されることが多いが、その線形系に関しても高速に変化するダイナミクスを持つ場合に実適用するのは容易ではなく計算時間の高速化が問題となっている。
【0004】
非線形なプラントモデルを持つ制御対象も含めて、モデル予測制御についての問題を実時間で実行するための方法としては,大きく分けて2つに分類される。1つはオフラインで状態フィードバック制御則をプラントの状態x(k)の関数として表しておき、オンラインでは代入計算のみを行う方法であり、もう1つはオンラインですべて計算する方法である。
【0005】
オフラインでの計算は、ハミルトン・ヤコビ・ベルマンの解法に帰着するなどして、現在のプラントの状態x(k)の空間を場合分けし、各領域に対してフィードバック制御則を与える方法などが考えられている。しかし、これらの手法では場合分けの領域の数が非常に多くなることがある。また、状態の次元が大きくなると分割数の急激な増大が起こってしまう。
【0006】
一方、オンラインで計算する方法は、勾配法や内点法などの最適化問題のさまざまな数値解法が適用できる。また、ラグランジュ乗数に関する双対問題ととらえることによって効率的に解く方法や、ヘッシアンなどの構造を用いて効率化を図ったアルゴリズムも提唱されている。しかし、数値計算の手法として通常の反復計算を用いると、求める解が収束するまで計算を繰り返さなければならず、計算量が大きくなってしまう。
【0007】
そこで、時刻をパラメータとする連続変形法としてとらえて反復計算を減らす工夫も考えられている。それでもプラントの状態x(k)の変化が大きいときは反復回数が大きくなり、求める時間内に計算が終わらないステップが出てくる可能性がある。
【0008】
また数値解法では、効率的に解を求めるため、最適問題の式の近似を多く行うことが多く、本来求めたい値から大きくずれる可能性を含んでしまう。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】WO99/57616号公報
【特許文献2】特開2004−86903号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
従って、本技術の目的は、モデル予測制御においてプラントに対する入力を高速に算出するための技術を提供することである。
【課題を解決するための手段】
【0011】
本技術の第1の態様に係る行列生成方法は、(A)(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、(2)出力状態の初期条件式と、(3)出力状態の目標値と出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの入力についての偏微分であって第1のラグランジュ乗数と第2のラグランジュ乗数と解入力との関係を表す第1の条件式と、(4)第1のラグランジュ乗数とハミルトニアンの出力状態についての偏微分との関係を表す第2の条件式と、(5)第1のラグランジュ乗数の予測期間後の値と、出力状態の目標値と予測期間後の解出力状態との差に関する関数との関係式と、を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第1の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部から第2の条件式及び関係式を読み出して、第2の条件式及び関係式を、各時刻における第1のラグランジュ乗数を目標値と解出力状態とで表す第2の一次式群に変換し、データ格納部に格納する処理と、(C)データ格納部に格納されている第1の一次式群を第2の一次式群に代入することで、各時刻における第1のラグランジュ乗数を目標値と解入力と出力状態とで表す第3の一次式群に変換し、データ格納部に格納する処理と、(D)データ格納部から第1の条件式を読み出して、第2のラグランジュ乗数の項を除外した第1の条件式に、データ格納部に格納されている第3の一次式群を代入することで、目標値と解入力と出力状態との各時刻における関係を表す第4の一次式群に変換し、データ格納部に格納する処理と、(E)データ格納部に格納されている第4の一次式群を、係数行列と、制御期間内における解入力についてのベクトルとの積が、目標値と出力状態とについての関数ベクトルと等式で表されるように変形して、係数行列と関数ベクトルとをデータ格納部に格納する処理とを含む。
【0012】
本技術の第2の態様に係る行列生成方法は、(A)(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、(2)出力状態の初期条件式と、(3)出力状態の目標値と出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって第1のラグランジュ乗数と第2のラグランジュ乗数と解入力との関係を表す第1の条件式と、(4)第1のラグランジュ乗数とハミルトニアンの出力状態についての偏微分との関係を表す第2の条件式と、(5)第1のラグランジュ乗数の予測期間後の値と、出力状態の目標値と予測期間後の解出力状態との差に関する関数との関係式と、(6)制約条件に含まれる上記入力の下限値に関連する第2のラグランジュ乗数を解入力の第1の一次式で近似した場合における当該第1の一次式群と、制約条件に含まれる上記入力の上限値に関連する第2のラグランジュ乗数を解入力の第2の一次式で近似した場合における当該第2の一次式群と、を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第3の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部から第2の条件式及び関係式を読み出して、第2の条件式及び関係式を、各時刻における第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第4の一次式群に変換し、データ格納部に格納する処理と、(C)データ格納部に格納されている第3の一次式群を第4の一次式群に代入することで、各時刻における第1のラグランジュ乗数を目標値と解入力と出力状態とで表す第5の一次式群に変換し、データ格納部に格納する処理と、(D)データ格納部に格納されている第3の一次式群に対して、データ格納部に格納されている第5の一次式群、第1の一次式群及び第2の一次式群を代入することで、目標値と解入力と出力状態との各時刻における関係を表す第6の一次式群に変換し、データ格納部に格納する処理と、(E)データ格納部に格納されている第6の一次式群を、係数行列と、制御期間内における解入力についてのベクトルとの積が、目標値と出力状態とについての関数ベクトルと等式で表されるように変形して、係数行列と関数ベクトルとをデータ格納部に格納する処理とを含む。
【0013】
本技術の第3の態様に係るプラント制御方法は、(A)制御対象であるプラントの現在の出力状態と現在の目標値とを取得する処理と、(B)(1)プラントの解出力状態と解入力との関係を表す状態方程式と、(2)出力状態の初期条件式と、(3)出力状態の目標値と出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの入力についての偏微分であって第1のラグランジュ乗数と第2のラグランジュ乗数と解入力との関係を表す第1の条件式と、(4)第1のラグランジュ乗数とハミルトニアンの出力状態についての偏微分との関係を表す第2の条件式と、(5)第1のラグランジュ乗数の予測期間後の値と、出力状態の目標値と予測期間後の解出力状態との差に関する関数との関係式と、等価な一次方程式群であって、係数行列と、制御期間内における解入力についてのベクトルとの積が、目標値と出力状態とについての関数ベクトルと等しくなるように表されている一次方程式群に対して、現在の出力状態と現在の目標値とを代入して解くことによって、制御期間内における解入力を算出する算出処理と、(C)制御期間内における解入力のうち最初の時刻のための解入力を、制御対象のプラントに出力する処理とを含む。
【0014】
本技術の第4の態様に係る行列生成方法は、(A)(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、(2)出力状態の初期条件式と、(3)出力状態の目標値と解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、出力状態の目標値と予測区間後における解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、解入力の二乗を第3の重み行列で重み付けして初期時刻から予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち第1の項と第2の項とを、初期時刻における解入力から制御区間後の1単位時間前の時点における解入力までの各解入力で偏微分することで得られる、解出力状態についての第1の一次式群と、(4)第3の項を初期時刻における解入力から制御区間後の1単位時間前の時点における解入力までの各解入力で偏微分することで得られ且つ第3の重み行列の要素値、制御区間の値及び予測区間の値とで決定される行列要素を有する第1の行列と、を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第2の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部に格納されている第2の一次式群及び第2の一次式群における解入力の係数値を、データ格納部に格納されている第1の一次式群に代入することで第3の一次式群を生成し、データ格納部に格納する処理と、(C)データ格納部に格納されている第3の一次式群における各解入力の項の係数を抽出して第2の行列を生成し、第3の一次式群における解入力の項以外の項を抽出してベクトルを生成し、データ格納部に格納する処理と、(D)データ格納部に格納されている第1の行列と第2の行列とを加算して、第3の行列を生成し、データ格納部に格納する処理とを含む。
【0015】
本技術の第5の態様に係る行列生成方法は、(A)(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、(2)出力状態の初期条件式と、(3)出力状態の目標値と解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、出力状態の目標値と予測区間後における解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、解入力の二乗を第3の重み行列で重み付けして初期時刻から予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち第1の項及び第2の項を、係数として乗じられている、第1の重み行列及び第2の重み行列の要素毎に分類することで得られ且つ当該要素が除外された複数の式の各々を、初期時刻における解入力から制御区間後の1単位時間前の時点における解入力までの各解入力で偏微分することで得られる、解出力状態についての第1の一次式群と、を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第2の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部に格納されている第2の一次式群及び第2の一次式群における解入力の係数値を、データ格納部に格納されている第1の一次式群に代入することで、複数の式の各々について第3の一次式群を生成し、データ格納部に格納する処理と、(C)データ格納部に格納されている第3の一次式群における各解入力の項の係数を複数の式の各々について抽出して複数の式の各々について行列を生成し、第3の一次式群における解入力の項以外の項を複数の式の各々について抽出して複数の式の各々についてベクトルを生成し、データ格納部に格納する処理とを含む。
【発明の効果】
【0016】
モデル予測制御においてプラントに対する入力を高速に算出できるようになる。
【図面の簡単な説明】
【0017】
【図1】図1は、プラントの一例であるエンジンの模式図である。
【図2】図2は、第1のオフライン行列生成装置の機能ブロック図である。
【図3】図3は、第1のオフライン行列生成処理の処理フローを示す図である。
【図4】図4は、プラントの一例であるエンジンのエンジン制御装置を説明するための図である。
【図5】図5は、第1のエンジン制御装置の簡略化したブロック線図である。
【図6】図6は、第1モデル予測制御部の処理フローを示す図である。
【図7】図7は、第2のオフライン行列生成装置の機能ブロック図である。
【図8】図8は、第2のオフライン行列生成処理の処理フローを示す図である。
【図9】図9は、第2のエンジン制御装置の簡略化したブロック線図である。
【図10】図10は、第2モデル予測制御部の処理フローを示す図である。
【図11】図11は、オフライン行列生成処理前の連立方程式の状態を示す図である。
【図12】図12は、オフライン行列生成処理後の連立方程式の状態を示す図である。
【図13】図13は、第3のオフライン行列生成装置の機能ブロック図である。
【図14】図14は、第3のオフライン行列生成処理の処理フローを示す図である。
【図15】図15は、行列M1及びベクトルbの生成について説明するための模式図である。
【図16】図16は、第2の実施の形態に係る第1のオフライン行列生成装置の機能ブロック図である。
【図17】図17は、第2の実施の形態に係る第1のオフライン行列生成処理の処理フローを示す図である。
【図18】図18は、第2の実施の形態に係る第2のオフライン行列生成装置の機能ブロック図である。
【図19】図19は、第2の実施の形態に係る第2のオフライン行列生成処理の処理フローを示す図である。
【図20】図20は、第3の実施の形態に係る第1のオフライン行列生成装置の機能ブロック図である。
【図21】図21は、第3の実施の形態に係る第1のオフライン行列生成処理の処理フローを示す図である。
【図22】図22は、第3の実施の形態に係る第2のオフライン行列生成装置の機能ブロック図である。
【図23】図23は、第3の実施の形態に係る第2のオフライン行列生成処理の処理フローを示す図である。
【図24】図24は、コンピュータの機能ブロック図である。
【図25】図25は、エンジン制御装置の機能ブロック図である。
【図26】図26は、プラント制御装置の機能ブロック図である。
【発明を実施するための形態】
【0018】
[実施の形態1]
本実施の形態では、線形システムに対するモデル予測制御(以下、線形モデル予測制御と呼ぶ)を取り扱うことにする。
【0019】
最初に、この線形モデル予測制御の定式化について説明するが、詳細については、「大塚敏之:非線形Receding Horizon 制御の計算方法について,計測と制御, 41 第5号, 366/371 (2002)」等を参照のこと。
【0020】
m入力n出力の制御対象は以下の状態方程式で与えられるとする。
【数1】

【0021】
ここで、tは時間を表し、u(k)∈Rmはプラントへの制御入力ベクトル、x(k)∈Rnはプラントの状態ベクトルを表す。また、Aはn×n行列、Bはn×m行列である。制御入力関数は時間tに対して区分的連続とする。
【0022】
また、入力に関して以下のような制約が加えられているとする。
【数2】

【0023】
このような不等式制約を等式制約として表すために、ダミー変数を用いて以下のような等式制約と表し直す。但し、これらをC(u)=0と表す。
【数3】

【0024】
このような前提の下、まず現在の時間をt=k、時刻t=k+Tまでを評価区間とし、状態xの目標値をXrefとする。そして以下のような評価関数Vを考える。
【数4】

【0025】
ここでS,Q及びRは、それぞれn×n、n×n、m×mの重み行列である。また、ダミー変数uα及びuβは(3)式のように2次の項に現れるため、符号が正負どちらでも最適解になり得る。そのため、正負どちらが望ましいかを反映させるために、ptopbar(上にバーが付されたp)及びpunderbar(下にバーが付されたp)を微小な正の値として−pTtopbarα−pTunderbarβという項を評価関数の被積分項に付け加えている。この評価関数Vを最小にする入力u*を求めることが、線形モデル予測制御の核となる問題である。なお、ptopbarは、uiの最大値に対応し、punderbarは、uiの最小値に対応する。
【0026】
ラグランジュ乗数をλ及びμとし、ハミルトニアンHを以下のように定義する。
【数5】

【0027】
評価関数Vを最小にする最適制御とその時の軌道が満たすべき必要条件は以下のとおりである。
【数6】

【0028】
従って、Vを最小にするu*を求めることは、(5)乃至(7)式を満たすu*を求めることに帰着する。
【0029】
ここまでは連続系において定式化を行ったが、実際に計算機で解を求めるためには、評価区間を分割し離散近似した問題を各時刻で解くことになる。通常、最適制御問題の評価区間をプラントの入力周期を刻み幅として分割し、離散近似する。以下、各時刻で解くべき問題を説明する。
【0030】
入力の周期Δτを分割の幅とし、予測期間を入力周期の倍数T=HpΔτと設定する。このHp∈Rを予測ホライズンと呼ぶ。以下、簡単化のため、連続系における関数f(k+i×Δτ)を離散系ではf(i)と表すことにする。また、制御入力を変えることができる回数Hc∈Rを制御ホライズンと呼ぶ。このとき、以下のように表される。
【数7】

【0031】
そして、離散近似された問題に対する最適性の必要条件は、以下の2点境界値問題になる。
【数8】

【0032】
ここでx*(i)、u*(i)、λ*(i)及びμ*(i)はそれぞれiステップ目の最適な出力、入力、ラグランジュ乗数を表す。ΦxTは、ΦTの、xについての偏微分を表す。また、Hu及びHxはそれぞれハミルトニアンのu及びxによる偏微分を表す。すなわち、以下のとおりである。
【数9】

【0033】
そして、(8)乃至(13)式をまとめると、以下の非線形方程式系とみなすことができる。
【数10】

【0034】
従って、線形モデル予測制御では、各時刻において連立1次方程式(14)を解くことになる。この(14)式の計算効率と解の精度がモデル予測制御の解法の速度及び精度を決定づける。
【0035】
なお、近年のディーゼルエンジンにおいては、エミッションの低減と燃費の向上を目的として、新気量(MAF:Mass Air Flow)及び吸気圧(MAP:Manifold Air Pressure)が吸気系制御器により最適に制御されている。
【0036】
一般的に、図1に示すように、ディーゼルエンジンの吸気制御系は、吸気圧制御系と新気量制御系を含み、吸気圧と新気量は、互いに独立に制御されている。吸気圧制御系は、排気中のスス(PM:Particulate Matter)を低減するために、可変ノズルターボVNT(Variable Nozzle Turbo)のノズル径を制御して吸気圧を吸気圧目標値に追従するようにコントロールしている。一方、新気量制御系は、排気中の窒素酸化物(NOx)を低減するために、排気をシリンダ内に再循環させる排気循環器EGR(Exhaust Gas Recirculation)のバルブ開度を制御して新気量を新気量目標値に追従するようにコントロールしている。
【0037】
このようにディーゼルエンジンでは、2入力2出力制御系となっており、本実施の形態でも、2入力2出力系を検討する。
【0038】
2入力2出力系の場合には、制御出力x(k)、制御入力u(k)、ダミー変数uα及びuβ、ラグランジュ乗数λ(k)、制御出力の目標値Xrefを以下のように表す。
【数11】

なお、dtopbar(上にバーが付されたd)及びdunderbar(下にバーが付されたd)は変数である。
【0039】
さらに、制御対象の状態方程式における係数行列を以下のように表す。
【数12】

【0040】
また、評価関数Vの重み行列を以下のように表すものとする。
【数13】

【0041】
重み行列S、Q及びRに関しては一般的には対角行列であるとは限らないが、実際上しばしば用いられる対角行列として説明する。なお、対角行列でない場合においても、特段問題なく以下で述べる処理を行うことができる。
【0042】
このような前提の下、(14)式は、以下のように展開される。
【数14】

【数15】

【数16】

【数17】

なお、xr1及びxr2は、Xrefの成分値を表す。
【0043】
上で述べたようなディーゼルエンジンの吸気系制御のような応答が速い対象に対しては、より高速に連立方程式を解くことが望まれる。さらに、できるだけ誤差がなく正確な解を安定して得るために直接法を採用することが好ましいが、直接法は一般に反復法に比べて変数の増加に対応する計算時間の増加が大きいという問題もある。よって、許容される時間内で計算可能とするためには、連立1次方程式のサイズをできるだけ小さくすることが好ましい。このような背景から、本実施の形態では、オフラインで代数的な簡略手法を用いて連立方程式の変数の数を減らし行列サイズを小さくすることによって、オンラインでの計算量を減らし、直接法の適用も実用的な範囲で可能にする。
【0044】
上で述べたように、線形モデル予測制御の最適制御問題は、制約のない場合には以下の変数に対して(m+2n)×Hp元連立方程式(34)となっている。
【数18】

【数19】

【0045】
[制約条件を考慮しない場合]
制約条件を考慮しない線形モデル予測制御の場合、この連立方程式を解くことで最適な入力を得ることができる。
【0046】
なお、最終的には、(36)式を変数とするm×Hp元連立方程式(35)を求める。
【数20】

【数21】

【0047】
本実施の形態では、以下、(33)式及び(34)式を以下のように簡略化する処理を実施するオフライン行列生成装置を導入する。
【0048】
図2に本実施の形態に係るオフライン行列生成装置100の機能ブロック図を示す。なお、図2では制約なしの場合を説明する。オフライン行列生成装置100は、入力部101と、入力データ格納部102と、第1変形処理部103と、第1データ格納部104と、第2変形処理部105と、第2データ格納部106と、第3変形処理部107と、第3データ格納部108と、連立方程式生成部109と、第4データ格納部110と、行列生成部111と、第5データ格納部112とを有する。
【0049】
入力部101は、例えばユーザからの入力データである行列A、B、S、Q、R、Hp、Hc、Δτの入力を受け付け、入力データ格納部102に格納する。入力データ格納部102は、これらのデータに加えて解くべき連立方程式を表すデータをも格納している。解くべき連立方程式のデータについても入力部101から入力されることもある。さらに、入力部101は、行列A、B、S、Q、R、Hp、Hc、Δτのデータを、解くべき連立方程式に設定する処理をも行う。第1変形処理部103は、入力データ格納部102に格納されたデータを用いて第1変形処理を実施し、処理結果を第1データ格納部104に格納する。第2変形処理部105は、入力データ格納部102に格納されたデータを用いて第2変形処理を実施し、処理結果を第2データ格納部106に格納する。第3変形処理部107は、第1データ格納部104及び第2データ格納部106に格納されているデータを用いて第3変形処理を実施し、第3データ格納部108に格納する。
【0050】
連立方程式生成部109は、第1データ格納部104及び第3データ格納部108に格納されているデータを用いて処理を行い、処理結果を第4データ格納部110に格納する。行列生成部111は、第4データ格納部110に格納されているデータを用いて処理を行い、第5データ格納部112に格納する。
【0051】
次に、図3を用いて、オフライン行列生成装置100の処理内容を説明する。まず、入力部101は、ユーザからの入力データである行列A、B、S、Q、R、Hp、Hc、Δτの入力を受け付け、入力データ格納部102に格納する(図3:ステップS1)。解くべき連立方程式のデータについても入力部101から入力され、入力データ格納部102に格納されることもある。さらに、入力部101は、行列A、B、S、Q、R、Hp、Hc、Δτのデータを、解くべき連立方程式に設定する処理をも行って、処理結果を入力データ格納部102に格納する。
【0052】
そして、第1変形処理部103は、入力データ格納部102に格納されたデータを用いて、最適出力状態x*(i)についての第1変形処理を実施し、処理結果を第1データ格納部104に格納する(ステップS3)。
【0053】
具体的には以下のような処理を実施する。i=0として、(9)式を(8)式に代入する。2入力2出力系では、(17)式を(15)式に代入し、(18)式を(15)式に代入する。但し、説明を簡略化するために、以下では(8)式及び(9)式で説明する。
【0054】
このような処理を実施すると、x(k)及びu*(0)を変数とする以下の式が得られる。
【数22】

【0055】
同様に、i=1とすると、(8)式からx*(2)はx*(1)とu*(1)との一次式で表されるため、上で求めたx*(1)の式を代入すると、x(k)、u*(0)及びu*(1)を変数とする以下の式が得られる。
【数23】

【0056】
*(3)以降も同様に処理を繰り返すことによって、x(k)とu*(0),..,u*(i−1)を変数とする以下の式が得られる。
【数24】

なお、i=0,1,...Hp−1である。
【0057】
このようにx*(i)の式を生成する。このような処理結果は第1データ格納部104に格納される。
【0058】
また、第2変形処理部105は、入力データ格納部102に格納されたデータを用いて、最適ラグランジュ乗数λ*(i)についての第2変形処理を実施し、処理結果を第2データ格納部106に格納する(ステップS5)。
【0059】
具体的には以下のような処理を実施する。すなわち、i=Hpとして、(13)式(2入力2出力系では(31)式及び(32)式)をそのまま採用する。但し、ΦxT(x*(Hp))は、目標値Xref及びx*(Hp)が変数となっているので、以下のように表される。
【数25】

【0060】
そして、i=Hp−1として、(13)式を(12)式に代入する。2入力2出力系では、(31)式を(29)式に代入し、(32)式を(30)式に代入する。但し、説明を簡略化するために、以下では(13)式及び(12)式で説明する。
【数26】

【0061】
ここで、ΦxT(x*(Hp))は目標値Xrefとx*(Hp)の関数であり、第2項はx*(Hp−1)とΦxT(x*(Hp))の関数であるから、結局λ*(Hp−1)は、Xrefとx*(Hp)とx*(Hp−1)との関数となり、以下のように表される。
【数27】

【0062】
その後、i=Hp−2として、(39)式を(12)式に代入する。このような処理を繰り返すと、λ*(Hp−j)はXrefとx*(Hp)、x*(Hp−1),...x*(Hp−j)の一次式になる。
【数28】

なお、j=0,1,...,Hp−1である。
【0063】
このようにλ*(Hp−j)の式を生成する。このような処理結果は第2データ格納部106に格納される。
【0064】
さらに、第3変形処理部107は、第1データ格納部104及び第2データ格納部106に格納されているデータを用いて、最適ラグランジュ乗数λ*(i)についての第3変形処理を実施し、処理結果を第3データ格納部108に格納する(ステップS7)。
【0065】
具体的には以下のような処理を実施する。(40)式の各λ*(Hp−j)に対して各(37)式を代入する。これによって、各λ*(Hp−1)は、以下に表すように、Xrefとu*(0),...,u*(Hp−1),x(k)の1次式となる。
【数29】

【0066】
このようにして得られた各λ*(Hp−j)のデータは、第3データ格納部108に格納される。
【0067】
その後、連立方程式生成部109は、第1データ格納部104及び第3データ格納部108に格納されているデータを用いて連立方程式生成処理を実施し、処理結果を第4データ格納部110に格納する(ステップS9)。
【0068】
制約がない場合には、μ*=0とみなすことができ、(41)式を(10)式(2入力2出力系では(19)式及び(20)式)に代入する。そうすると、(10)式は、Xref、u*(0),...,u*(Hp−1),x(k)を変数とする一次式の組として以下のように表される。
【数30】

【0069】
以上から制約条件のない場合における離散化された線形モデル予測制御の最適制御解を求める連立方程式は、u*(0),...,u*(Hp−1)についての一次式となる。
【0070】
このような連立方程式のデータは、第4データ格納部110に格納される。
【0071】
そして、行列生成部111は、第4データ格納部110に格納されたデータを用いて行列M及びbを生成して、第5データ格納部112に格納する(ステップS11)。
【0072】
具体的には、以下のような処理を実施する。すなわち、Hc<Hpのとき、以下のようになる。
【数31】

【0073】
従って(42)式にこの関係式を代入する。そうすると以下のように表される。
【数32】

【0074】
さらに、ζHc-1=0,...,ζHp-1=0は同等の式になるので除外する。そうすると、最適制御解を求める連立方程式は、u*(0),...,u*(Hc−1)を変数としたHc本の連立方程式と同等となる。
【数33】

【0075】
この方程式はm×Hc変数の連立一次方程式となる。mは入力の数である。この(44)式を纏めて、以下の形式に変換する。
【数34】

【0076】
ここでMはm×Hc次の正方行列となり、bはXrefとx(k)の1次式を成分として有するm×Hc次ベクトルである。
【0077】
この行列Mとベクトル関数b(Xref,x(k))が、オフライン行列生成装置100の出力データとなる。
【0078】
この手法を用いれば、主たる計算部分である連立1次方程式の計算が制御入力の次元と制御ホライズンにのみ依存するため、出力状態の次元を大きくした場合でも制御入力の数が変わらなければ、全体の計算量はほとんど変わらなくなる。
【0079】
ここで、2入力2出力系における具体例(例1と呼ぶ)について示しておく。制御対象の状態方程式の係数行列を以下のように設定したとする。
【数35】

【0080】
また、評価関数Vの重み行列を設定したとする。
【数36】

【0081】
さらに、目標値をXref=(1,10)Tとし、Hp=4、Hc=2とすると、制約条件がない場合には、以下のような行列が得られる。
【数37】

【数38】

【数39】

【0082】
上で述べた処理を行う前の連立1次方程式の行列のサイズは24×24であり、行列のサイズが1/6になっている。連立1次方程式を直接法で解く場合、計算時間は行列サイズの3乗に比例するため、連立方程式を解く部分の計算時間は1/216となっている。上で述べた処理によって入力の次元と制御ホライズンの設定によっては1回のステップで解くべき連立方程式の行列サイズはきわめて小さくすることができ、それによって反復法ではなく直接法を採用することができ、安定且つ高速に解くことが可能になる。また、上で述べた処理によって得られる連立方程式は制御入力の次元と制御ホライズンHcのみに依存するため、出力状態x(k)の次元が大きくなったとしても計算量は大幅に増加することはない。例えば、プラントのむだ時間をパディ近似などによって考慮する場合には、その分状態の数が増加する。例えば2次のパディ近似を適用すると2入力6出力系となるが、状態x(i)の要素が6つになっても、上で述べたように最適出力状態x*(i)の項をu*(i)の項に置換してゆくので、計算量はu*(i)の次数に依存するためほとんど影響がない。
【0083】
図4に、本技術の実施の形態に係るエンジンの一例としてディーゼルエンジンを示す。エンジン本体1には、エンジン本体1からの排ガスを供給する排気循環器EGRと、排ガスの圧力にてタービンを回して新気(Fresh Air)を圧縮してエンジン本体1に供給する可変ノズルターボVNTとが接続されている。可変ノズルターボVNTのノズル開度を調整することによって、可変ノズルターボVNTのタービンの回転が調整され、吸気圧(MAP)センサで測定される吸気圧(MAP)が調整される。一方、排気循環器EGRに設けられているEGRバルブのバルブ開度を調整することによって、新気量(MAF)センサで測定される新気量(MAF)が調整される。
【0084】
本実施の形態に係るエンジン制御装置1000には、MAPセンサからの吸気圧測定値と、MAFセンサからの新気量測定値と、外部から与えられる燃料噴射量の設定値と、同じく外部から与えられるエンジン回転数の設定値とが入力されるようになっている。また、エンジン制御装置1000からは、EGRバルブのバルブ開度の操作量(制御入力又は単に入力とも呼ぶ)がEGRバルブに出力され、VNTノズルのノズル開度の操作量(制御入力又は単に入力とも呼ぶ)がVNTノズルに出力されるようになっている。
【0085】
本実施の形態に係るエンジン制御装置1000のブロック線図を図5に示す。エンジン制御装置1000は、計画器210と、第1モデル予測制御部220とを有する。プラント230は、例えばエンジン特性に相当する。第1モデル予測制御部220は、直接法によって連立一次方程式を解く演算部である連立方程式演算部221と、データ格納部222とを含む。データ格納部222には、M及びbについてのデータが格納されているものとする。
【0086】
すなわち、計画器210には、燃料噴射量の設定値とエンジン回転数の設定値とが入力されて、燃料噴射量の値及びエンジン回転数の値に対応付けてEGRバルブ開度の目標値及びVNTノズル開度の目標値Uref、燃料噴射量の値及びエンジン回転数の値に対応付けて吸気圧MAPの目標値及び新気量MAFの目標値Xrefが登録されている。本実施の形態では、計画器210から、EGRバルブ開度の目標値及びVNTノズル開度の目標値Uref、及び吸気圧MAPの目標値及び新気量MAFの目標値Xrefを出力する。
【0087】
この目標値Xrefとプラント230からの出力x(k)(例えばMAFセンサ出力及びMAPセンサ出力)とが、第1モデル予測制御部220に入力される。第1モデル予測制御部220は、以下で述べるモデル予測制御の処理を実施して、入力u*(i)をプラント230に出力する。このような処理が繰り返される。
【0088】
次に、第1モデル予測制御部220の処理について図6を用いて説明する。第1モデル予測制御部220は、目標値Xrefと出力x(k)を取得し、bに目標値Xref及び出力x(k)を代入してbを数値ベクトル化する(図6:ステップS21)。そして、第1モデル予測制御部220の連立方程式演算部221は、MU=bという連立一次方程式を、よく知られている直接法で解き、解Uを導出する(ステップS23)。解法自体は従来と同じであるが、用いている行列自体が全く異なっている。上でも述べたように、Mもbも全くサイズが非常に小さくなっているだけではなく、その各成分(要素とも呼ぶ)も異なっている。
【0089】
すなわち、本実施の形態のオフライン行列生成処理を実施しない場合、(8)式乃至(13)式をまとめると、その左辺は、プラントの離散状態方程式の係数行列Abar及びBbar(Abar=I+ΔτA、Bbar=I+ΔτB)と評価関数Vの重み行列S、Q、Rの成分を含む係数行列と、予測期間Hp個×入力数mの最適入力u*(i)と予測期間Hp個×出力数nの最適出力状態x*(i)と予測期間Hp個×出力数nの最適ラグランジュ乗数λ*(i)とを含むベクトルとの積になっている。一方、右辺は、オフライン行列生成処理時には未定のx(k)及び目標値Xrefについての成分を含むベクトルである。
【0090】
そしてオフライン行列生成処理を実施することによって、最適出力状態x*(i)及び最適ラグランジュ乗数λ*(i)を最適入力u*(i)の式に変換して代入することで考慮すべき要素を入力u*(i)に限定する。そして、最適入力u*についても最適入力u*(Hc)からu*(Hp−1)をも除外して解くべき要素数をも削減している。このようなオフライン行列生成処理を実施した後であれば、MU=bにおけるベクトルUは、制御期間Hc個の入力u*(i)のみを成分として含む。また、関数ベクトルbは、目標値Xref及びx(k)の関数となっており、制御期間Hc個の要素を含む。係数行列Mは、MU=bの形でオフライン行列生成処理前の方程式との等価性を担保するための係数行列である。
【0091】
従って、連立一次方程式を解く解法については同一でも、全く異なる形の連立一次方程式を解くことになっており、処理負荷が大幅に削減されている。
【0092】
その後、第1モデル予測制御部220は、解Uから最適入力値u*を抽出し、プラント230に出力する(ステップS25)。最適入力値u*は、解Uにおける成分u*(0)である。以上の処理を処理終了になるまで実施する(ステップS27)。
【0093】
以上のような処理を実施することによって、オンライン処理では高速に最適入力値u*を得ることができるようになる。なお、u*に計画器210から出力された、EGRバルブ開度の目標値及びVNTノズル開度の目標値Urefが重畳されて、プラント230に入力される。
【0094】
[制約条件を考慮する場合]
次に、制約条件を考慮する場合について説明する。制約条件を考慮しない場合には代数的簡略化の手法を用いて行列サイズを小さくしていた。しかしながら、(11)式の制約条件C(u)=0(2入力2出力系であれば(25)式乃至(28)式)は線形式ではないため、そのままでは取り扱うことができない。そこで、代数的処理と1次近似を巧く行うことによって、制約条件を、制約条件を考慮しない場合の連立1次方程式に組み込む。
【0095】
制約条件を考慮する場合のオフライン行列生成処理装置500の構成を図7に示す。制約条件を考慮しない場合と同じ機能を有するものについては、同じ参照番号が付されている。
【0096】
オフライン行列生成装置500は、入力部101と、入力データ格納部102と、第1変形処理部103と、第1データ格納部104と、第2変形処理部105と、第2データ格納部106と、第3変形処理部107と、第3データ格納部108と、連立方程式生成部109と、第4データ格納部110と、行列生成部111と、第5データ格納部112と、第4変形処理部501とを有する。このように第4変形処理部501が新たに導入されている。
【0097】
入力部101は、例えばユーザからの入力データである行列A、B、S、Q、R、Hp、Hc、Δτ、ptopbar及びpunderbarの入力を受け付け、入力データ格納部102に格納する。入力データ格納部102は、これらのデータに加えて解くべき連立方程式を表すデータをも格納している。解くべき連立方程式のデータについても入力部101から入力されることもある。さらに、入力部101は、行列A、B、S、Q、R、Hp、Hc、Δτ、ptopbar及びpunderbarのデータを、解くべき連立方程式に設定する処理をも行う。制約条件も入力され、入力データ格納部102に格納される場合がある。第1変形処理部103は、入力データ格納部102に格納されたデータを用いて第1変形処理を実施し、処理結果を第1データ格納部104に格納する。第2変形処理部105は、入力データ格納部102に格納されたデータを用いて第2変形処理を実施し、処理結果を第2データ格納部106に格納する。第3変形処理部107は、第1データ格納部104及び第2データ格納部106に格納されているデータを用いて第3変形処理を実施し、第3データ格納部108に格納する。
【0098】
連立方程式生成部109は、第1データ格納部104及び第3データ格納部108に格納されているデータを用いて処理を行い、処理結果を第4データ格納部110に格納する。行列生成部111は、第4データ格納部110に格納されているデータを用いて処理を行い、第5データ格納部112に格納する。
【0099】
第4変形処理部501は、入力データ格納部102に格納されているデータを用いて処理を行い、処理結果を第5データ格納部112に格納する。
【0100】
次に、図8を用いて、オフライン行列生成装置500の処理内容を説明する。まず、入力部101は、ユーザからの入力データである行列A、B、S、Q、R、Hp、Hc、Δτ、ptopbar及びpunderbarの入力を受け付け、入力データ格納部102に格納する(図8:ステップS31)。制約条件uminj及びumaxjについても入力する場合がある。解くべき連立方程式のデータについても入力部101から入力され、入力データ格納部102に格納される場合もある。さらに、入力部101は、行列A、B、S、Q、R、Hp、Hc、Δτ、ptopbar及びpunderbarのデータを、解くべき連立方程式に設定する処理をも行って、処理結果を入力データ格納部102に格納する。
【0101】
そして、第1変形処理部103は、入力データ格納部102に格納されたデータを用いて、最適出力状態x*(i)についての第1変形処理を実施し、処理結果を第1データ格納部104に格納する(ステップS33)。本ステップは、ステップS3と同じであるから説明を省略する。
【0102】
また、第2変形処理部105は、入力データ格納部102に格納されたデータを用いて、最適ラグランジュ乗数λ*(i)についての第2変形処理を実施し、処理結果を第2データ格納部106に格納する(ステップS35)。本ステップは、ステップS5と同じであるから説明を省略する。
【0103】
さらに、第3変形処理部107は、第1データ格納部104及び第2データ格納部106に格納されているデータを用いて、最適ラグランジュ乗数λ*(i)についての第3変形処理を実施し、処理結果を第3データ格納部108に格納する(ステップS37)。本ステップは、ステップS7と同じであるから、詳細な説明を省略する。
【0104】
そして、第4変形処理部501は、入力データ格納部102及び第3データ格納部108に格納されているデータを用いて、制約一次近似演算を実施し、処理結果を第5データ格納部112に格納する(ステップS39)。本処理が、制約条件を考慮しない場合と異なる処理である。但し、他の処理への影響はないので、図8の処理の説明の後に詳細に説明する。
【0105】
その後、連立方程式生成部109は、入力データ格納部102に格納されているデータを用いて連立方程式生成処理を実施し、処理結果を第4データ格納部110に格納する(ステップS41)。本ステップは、ステップS9と同じであるから、詳細な説明を省略する。
【0106】
そして、行列生成部111は、第4データ格納部110に格納されたデータを用いて行列M及びbを生成して、第5データ格納部112に格納する(ステップS43)。本ステップは、ステップS11と同様であるから、詳細な説明を省略する。これにより、第5データ格納部112には、オフライン処理で使用するデータが格納されるようになる。
【0107】
次に、制約一次近似演算について、詳細に説明する。ここでは、(10)式(2入力2出力の場合には(19)式乃至(24)式)におけるλ*及びμ*を除去する。すなわち、u*(i)及び1単位時間前のu*(i)の値であるu*bar(i)(uの上にバーが付いたものを、ubarと表すものとする。)とで表される1次式を生成する。
【0108】
2入力2出力の場合を詳しく説明する。既に、ステップS23において(15)式乃至(18)式によりx*(i)がu*(i)で表されており、その結果と(29)式乃至(32)式によりλ*(i)がu*で表されているものとする。そしてi=0から、以下の処理を実施する。
【0109】
すなわち、制約条件の下限についての(21)式は、以下のように変形される。
【数40】

【0110】
また、(25)式は、以下のように変形される。
【数41】

【0111】
ここで、(47)式を(46)式に代入すると、以下のようになる。
【数42】

【0112】
これによって、μ*underbar1(0)(下にバーが付されたμ1*(0))はu*1(0)の関数の形にすることができる。しかし、一次関数ではないのでこのままでは連立一次方程式として取り扱うことができない。従って、1次近似を用いる。
【0113】
1次近似を行う場合には、近似の基点の選び方が重要であるが、本実施の形態では、t=k−1において最適化計算により得られた同じ時間の入力値u1bar*(1)(すなわちプラント230には出力されないが計算される1単位時間後の出力)を基点に選ぶ。そうすると(48)式は以下のように変形される。
【数43】

【0114】
これによって連立一次方程式に組み込むことができるようになる。なお、分かりやすくするために、wunderbar及びvunderbar(underbarは、下線を表す。)を導入する。
【数44】

【0115】
従って(49)式は以下のように表される。
【数45】

【0116】
μunderbar2(0)についても、同様に変形を実施した上で1次近似を行う。さらに、iを1インクリメントした後に、さらに同様に変形を実施した上で、t=k−1において最適計算によって得られた(i+1)単位時間後の計算結果u1bar*(2)及びu2bar*(2)をフィードバックして、それを基に1次近似を実施する。このような処理をi=Hc−1になるまで繰り返す。そうすると、一般的には以下のように表される。
【数46】

【0117】
次に、制約条件の上限についての(22)式は、i=0で以下のように変形される。
【数47】

【0118】
また、(26)式は、以下のように変形される。
【数48】

【0119】
ここで、(55)式を(54)式に代入すると、以下のようになる。
【数49】

【0120】
(56)式を見れば、上限についてのμ*topbar1(0)(上にバーが付されたμ1*(0))についてもu*1(0)の関数になることが分かる。従って、同様の1次近似を行う。すなわち、本実施の形態では、t=k−1において最適化計算により得られた同じ時間の入力値u1bar*(1)(すなわちプラント230には出力されないが計算される1単位時間後の出力)を基点に選ぶ。そうすると(56)式は以下のように変形される。
【数50】

【0121】
これによって連立一次方程式に組み込むことができるようになる。なお、分かりやすくするために、wtopbar及びvtopbar(topbarは、上線を表す。)を導入する。
【数51】

【0122】
このような処理をi=Hc−1になるまで繰り返す。そうすると、一般的には以下のように表される。
【数52】

【0123】
μtopbar2(0)についても、同様に変形を実施した上で1次近似を行う。さらに、iを1インクリメントした後に、さらに同様に変形を実施した上で、t=k−1において最適計算によって得られた(i+1)単位時間後の計算結果u1bar*(2)及びu2bar*(2)をフィードバックして、それを基に1次近似を実施する。このような処理をi=Hc−1になるまで繰り返す。そうすると、一般的には以下のように表される。
【数53】

【0124】
一般的には、上で述べたような変形を行った後、これらと第3変形処理部107の処理結果とで連立一次方程式を解くことになるのだが、実際には、全体の連立方程式は、以下のように表されることが分かっている。
【数54】

【数55】

なお、diag(V)は、ベクトルVの各成分を対角成分とする対角行列である。
【0125】
すなわち、実際に第4変形処理部501は、(63)乃至(66)式で表されるベクトルを生成することになる。
【数56】

【0126】
このようにMに対しては、上限値と前回計算結果における該当時刻における最適入力値とで表される成分を入力数×制御期間Hc分含む第1の制約ベクトルを対角行列に変換した結果を加算し、下限値と前回計算結果における該当時刻における最適入力値とで表される成分を入力数×制御期間Hc分含む第2の制約ベクトルを対角行列に変換した結果を差し引くようになる。また、bに対しても、上限値と前回計算結果における該当時刻における最適入力値とで表される成分を入力数×制御期間Hc分含む第3の制約ベクトルを差し引き、下限値と前回計算結果における該当時刻における最適入力値とで表される成分を入力数×制御期間Hc分含む第4の制約ベクトルを加算するようになっている。
【0127】
次に、制約条件を考慮する場合のエンジン制御装置1000のブロック線図を図9に示す。
【0128】
エンジン制御装置1000は、計画器210と、第2モデル予測制御部240とを有する。プラント230は、エンジン特性に相当する。第2モデル予測制御部240は、連立方程式演算部241と、制約条件反映部242と、U格納部243と、データ格納部244とを有する。データ格納部244は、M、b、Vunderbar、Vtopbar、Wunderbar及びWtopbarについてのデータを格納しているものとする。
【0129】
すなわち、計画器210には、燃料噴射量の設定値とエンジン回転数の設定値とが入力されて、燃料噴射量の値及びエンジン回転数の値に対応付けてEGRバルブ開度の目標値及びVNTノズル開度の目標値Uref、燃料噴射量の値及びエンジン回転数の値に対応付けて吸気圧MAPの目標値及び新気量MAFの目標値Xrefが登録されている。本実施の形態では、計画器210から、EGRバルブ開度の目標値及びVNTノズル開度の目標値Uref、及び吸気圧MAPの目標値及び新気量MAFの目標値Xrefを出力する。
【0130】
この目標値Xrefとプラント230からの出力x(k)(MAFセンサ出力及びMAPセンサ出力)と、1単位時間前に計算された最適入力値U*(i−1)と、制約条件とが、第2モデル予測制御部240に入力される。制約条件については不変であるならば、オフライン行列生成処理においてWunderbar、Vunderbar、Wtopbar及びVtopbarに埋め込んでしまう場合もある。第2モデル予測制御部240は、以下で述べるモデル予測制御の処理を実施して、入力u*(i)をプラント230に出力する。
【0131】
次に、第2モデル予測制御部240の処理について図10を用いて説明する。第2モデル予測制御部240は、目標値Xref及びx(k)を取得し、bに目標値Xref及び出力x(k)を代入してbを数値ベクトル化する(図10:ステップS51)。そして、第2モデル予測制御部240は、制約条件が有効であるか判断する(ステップS53)。固定の設定である場合もあれば、有効無効が外部から設定される場合もある。
【0132】
制約条件が有効であれば、制約条件反映部242は、U格納部243から1単位時間前の解U*(i−1)を読み出し、上で述べたようにVunderbar、Vtopbar、Wunderbar及びWtopbarを算出する(ステップS55)。なお、制約条件が、その都度設定される場合には、当該制約条件のデータを取得して、ステップS55で使用する。そして、制約条件反映部242は、M=M−diag(Vunderbar)+diag(Vtopbar)を算出すると共に(ステップS57)、b=b+Wunderbar−Wtopbarを算出する(ステップS59)。このようにしてM及びbに制約条件が反映される。その後処理はステップS61に移行する。
【0133】
制約条件が有効でない場合又はステップS59の後に、連立方程式演算部241は、MU=bという連立一次方程式を、よく知られている直接法で解き、解Uを導出し、解UをU格納部243に格納する(ステップS61)。解法自体は従来と同じであるが、用いている行列自体が全く異なっている。
【0134】
すなわち、本実施の形態のオフライン行列生成処理を実施しない場合、図11に示すような行列である。具体的には、左辺は、プラントの離散状態方程式の係数行列Abar及びBbar(Abar=I+ΔτA。Bbar=I+ΔτB。)と評価関数Vの重み行列S、Q、Rの要素を含む係数行列と、予測期間Hp個×入力数mの最適入力u*(i)と予測期間Hp個×出力数nの最適出力状態x*(i)と予測期間Hp個×出力数nの最適ラグランジュ乗数λ*(i)とを含むベクトルとの積になっている。一方、右辺は、予測期間Hp個×入力数m×出力数nの最適ラグランジュ乗数μ*(i)と、オフライン行列生成処理時には未定のx(k)及び目標値Xrefについての成分とを含む。
【0135】
そしてオフライン行列生成処理を実施することによって、最適出力状態x*(i)及び最適ラグランジュ乗数λ*(i)を最適入力u*(i)の式に変換して代入することで考慮すべき要素を最適入力u*(i)に限定する。そして、最適入力u*についても入力u*(Hc)からu*(Hp−1)をも除外して解くべき要素数をも削減している。このようなオフライン行列生成処理を実施した後であれば、図12に示すようなベクトルbが得られる。すなわち、MU=bにおけるベクトルUは、制御期間Hc個の最適入力u*(i)のみを成分として含む。また、関数ベクトルbは、目標値Xref及びx(k)の関数となっており、制御期間Hc個の要素を含む。係数行列Mは、MU=bの形でオフライン行列生成処理前の式との等価性を担保するための係数行列である。
【0136】
制約条件がある場合でも、制約条件の値及び1単位時間前の計算結果U*(i−1)の値が設定されてしまえば定数として扱うことができるので、行列及びベクトルの形は同じである。
【0137】
従って、連立一次方程式を解く解法については同一でも、全く異なる形の連立一次方程式を解くことになっており、処理負荷が大幅に削減されている。
【0138】
その後、第2モデル予測制御部240は、解Uから最適入力値u*を抽出し、プラント230に出力する(ステップS63)。最適入力値u*は、解Uにおけるu*(0)である。以上の処理を処理終了になるまで実施する(ステップS65)。
【0139】
以上のような処理を実施することによって、オンライン処理では高速に最適入力値u*を得ることができるようになる。このような処理が繰り返される。なお、u*に計画器210から出力された、EGRバルブ開度の目標値及びVNTノズル開度の目標値Urefが重畳されて、プラント230に入力される。
【0140】
ここで上で述べた例1の設定において、以下のような制約条件が設定された場合を考える。
【数57】

【0141】
そうすると、以下のような連立一次方程式が得られる。
【数58】

【数59】

【数60】

【数61】

【数62】

【0142】
以上のように、線形モデル予測制御に対して、オフラインで代数的手法を用いて解くべき問題を簡略化し、オンラインにおける計算量を小さくし、そのうえで連立方程式の直接解法を採用する。これにより、速いダイナミクスを持つ機械系に対しても有効なほど高速に計算可能で、且つ安定的に解を求めることができるようになる。さらに、プラントの状態x(k)の次元が仮に大きくなるような場合においても、大幅な計算量の増大を抑えることが可能となる。従って、プラントの実時間制御が可能となる。
【0143】
また、1次近似は制約条件を考慮する部分のみに限定しており、精度の低下も最低限に抑えている。
【0144】
なお、(53−1)式及び(53−2)式並びに(60)式及び(61)式が得られれば、これらを(10)式(2入力2出力系であれば(19)式及び(20)式)に代入すれば、μ*(i)の項が除去される。このように変形した後の式に、(41)式をさらに代入することも可能である。
【0145】
具体的には、図13のようなオフライン行列生成装置600を導入する。図7との差は、第4変形処理部501を除去した点と、連立方程式生成部109の代わりに第2連立方程式生成部502を導入した点と、第2連立方程式生成部502が入力データ格納部102に格納されているデータを用いる点とである。また、入力データ格納部102には、(53−1)式及び(53−2)式並びに(60)式及び(61)式のデータも格納されているものとする。
【0146】
そして、図14に示すように、処理フローは、ステップS31乃至S37については同じである。ステップS37の後には、第2連立方程式生成部502は、上で述べたよう代入処理を実施して連立方程式を生成し、第4データ格納部110に格納する(ステップS51)。
【0147】
その後、行列生成部111は、第4データ格納部110に格納されたデータを用いてM2U=b2における行列M2及びb2を生成して、第5データ格納部112に格納する(ステップS53)。本ステップは、ステップS11と基本的には同様であるから、詳細な説明を省略する。但し、(53−1)式及び(53−2)式並びに(60)式及び(61)式には定数でない項も含まれているので、行列M及びbとは中身が異なる。
【0148】
[実施の形態2]
本実施の形態では、2入力2出力系について議論するが、同様な方式でm入力n出力系に変形できる。
【0149】
予測区間Hpと制御区間Hcとから、第1の実施の形態で述べた評価関数Vを離散化すると、以下のように表される。
【数63】

但し、u*(Hc)=u*(Hc+1)=・・・=u*(Hp−1)
【0150】
また、ここで重み行列などを以下のように定義する。
【数64】

【0151】
この離散化された評価関数Jを最小化するという最適化問題は、以下のような連立方程式を解く問題に帰着する。
【数65】

【0152】
一方、この離散化された評価関数Jを具体的に書き下すと以下のように表される。
【数66】

【0153】
ここで評価関数Jを以下のように分けて考える。
【数67】

【0154】
すなわち、J=J1+J2+CONSと表すことができ、CONSについては、制約条件についての項であり、制約条件がなければ0として取り扱うことができ、0でなければ第1の実施の形態と同様に処理できる。従って、J’=J1+J2について処理することを考える。そうすると、(68)式乃至(71)式は、以下の計算を行うことから求めることができる。
【数68】

【0155】
ここで、(37)式で示したように、x1*(i)及びx2*(i)は、u1*(0),u2*(0),...,u1*(Hc−1),u2*(Hc−1)の一次式として表される。従って、∂J1/∂u1*(0)は以下のように表される。
【数69】

【0156】
このように書き下せば、x1*(i)及びx2*(i)と、x1*(0)におけるu1*(0)の係数等とを代入することで、(68)式の具体的な式を得ることができる。(68)式乃至(71)式のうち(68)式以外についても同様の形に変形でき、同様に式及び係数を代入することで、具体的な式を得ることができる。すなわち、(72)式のような式を(68)式乃至(71)式のそれぞれについて予め用意しておく。
【0157】
そして、導入後の式をu1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)の1次式に整理する。そうすると、以下のような形で表される。
【数70】

【0158】
なお、b1(Xref,x(k))等は、目標値Xref及び初期状態x1(k)及びx2(k)の一次式の形にした定数項(u1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)を変数としてみた場合の定数項)である。
【0159】
そうすると、図15に示すように、u1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)の係数を抽出して並べることで行列M1を生成する。さらに、bベクトルについては、u1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)以外の項を、抽出して符号を反転させて生成される。
【0160】
また、J2についてはu1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)の各々について偏微分すると、以下のようになる。
【数71】

【0161】
このように重み行列Rと予測区間Hp及び制御区間Hcとが用意されれば、値が得られるようになる。従って、以下のような行列M2を用意しておき、重み行列Rと予測区間Hp及び制御区間Hcが設定されれば、M2が得られる。但し、本実施の形態では、Hp及びHcについては予め決定された上で(72)式等が用意されるので、M2においてもHc及びHpについては設定されているものとする。
【数72】

【0162】
このようにして得られたM1及びM2から、M=M1+M2を実行する。この結果として第1の実施の形態の処理結果と同じ解を算出するM,bを得ることができる。制約については、第1の実施の形態と同様に取り扱えばよい。
【0163】
例えば、以下のような行列等が設定されているとする。
【数73】

【0164】
そして、(37)式として以下のような一次式群が得られたものとする。
【数74】

【0165】
そうすると、(72)式等の式に、(83)式乃至(90)式及びuj*(i)の係数を代入すると、以下のような式が得られる。
【数75】

【0166】
このような(91)式乃至(94)式のu1*(0),u2*(0),u1*(1),u2*(1)の係数を抽出すると、以下のような行列M1が得られる。
【数76】

【0167】
さらに、u1*(0),u2*(0),u1*(1),u2*(1)以外の項を抽出して符号を反転させると、以下のようなベクトルbが得られる。
【数77】

【0168】
また、M2行列に行列Rの要素値とHc及びHpとを代入すると、以下のような行列が得られる。
【数78】

【0169】
そうすると、以下のような行列Mが得られる。
【数79】

【0170】
このように、演算量は第1の実施の形態よりも削減されており、高速に行列M及びベクトルbを生成することができるようになる。
【0171】
[制約条件を考慮しない場合]
次に、このような行列M及びベクトルbを生成するためのオフライン行列生成装置700の構成例(制約条件無し)を図16に示す。オフライン行列生成装置700は、入力部101と、入力データ格納部102と、第1変形処理部103と、第1データ格納部104と、第2行列生成部701と、第9データ格納部702と、代入処理部703と、第6データ格納部704と、第1行列生成部705と、第7データ格納部706と、第3行列生成部707と、第8データ格納部708とを有する。入力部101、入力データ格納部102、第1変形処理部103及び第1データ格納部104については、第1の実施の形態で示したものとほぼ同じである。
【0172】
入力部101は、例えばユーザからの入力データである行列A、B、S、Q、R、Δτの入力を受け付け、入力データ格納部102に格納する。入力データ格納部102は、これらのデータに加えて解くべき連立方程式を表すデータと、(72)式等の評価関数の部分J1を偏微分した式及び行列M2のデータをも格納している。解くべき連立方程式のデータ等((8)式及び(9)式、2入力2出力系では(15)式乃至(18)式)についても入力部101から入力されることもある。また、第1変形処理部103は、入力データ格納部102に格納されたデータを用いて第1変形処理を実施し、処理結果を第1データ格納部104に格納する。なお、行列A及びBなどの要素値などを、関係する連立方程式に代入する処理をも実施する。
【0173】
第2行列生成部701は、入力データ格納部102に格納されているデータ(すなわち行列M2のデータ及び重み行列R)から、行列M2を生成して、第9データ格納部702に格納する。代入処理部703は、入力データ格納部102と第1データ格納部104とに格納されているデータを用いて、上で述べたような(37)式とその係数を、(72)式等に代入する処理を実施して、処理結果を第6データ格納部704に格納する。また、行列S及びQなどの要素値を、(72)式等に代入する処理をも実施する。
【0174】
第1行列生成部705は、第6データ格納部704に格納されているデータを用いて、行列M1及びベクトルbを生成する処理を実施し、行列M1について第7データ格納部706に格納し、ベクトルbについては第8データ格納部708に格納する。第3行列生成部707は、第9データ格納部702及び第7データ格納部706に格納されている行列M1と行列M2を加算して、加算結果である行列Mを第8データ格納部708に格納する。これによって、第8データ格納部708には、行列M及びベクトルbが格納されるようになる。
【0175】
次に、図16に示したオフライン行列生成装置700の処理フローを図17に示す。まず、入力部101は、ユーザからの入力データである行列A、B、S、Q、R、Δτの入力を受け付け、入力データ格納部102に格納する(図17:ステップS61)。解くべき連立方程式のデータについても入力部101から入力され、入力データ格納部102に格納される場合もある。
【0176】
そして、第1変形処理部103は、入力データ格納部102に格納されたデータを用いて、最適出力状態x*(i)についての第1変形処理を実施し、処理結果である一次式群(すなわち(37)式)を第1データ格納部104に格納する(ステップS63)。本ステップは、ステップS3とほぼ同様であるから説明を省略する。但し、行列A及びB等のデータについても、例えば本ステップで代入した上で処理する。
【0177】
そして、代入処理部703は、入力データ格納部102から、行列Q及びSのデータ及び(72)式等のデータ(すなわち評価関数Jの部分J1についての偏微分の式)を読み出し、第1データ格納部104から第1変形処理の処理結果である一次式群のデータを読み出して、行列Q及びSの要素値等と、第1変形処理の処理結果である一次式群及びその係数を、(72)式等に代入し、整理する代入処理を実施し、処理結果((73)乃至(75)式)を第6データ格納部704に格納する(ステップS65)。
【0178】
さらに、第1行列生成部705は、第6データ格納部704に格納されている代入処理の処理結果から、u1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)についての係数値を抽出して行列M1を生成し、第7データ格納部706に格納すると共に、定数項を抽出して符号を反転させてベクトルbを生成し、第8データ格納部708に格納する(ステップS67)。
【0179】
一方、第2行列生成部701は、入力データ格納部102から、重み行列Rの要素値と行列M2の式((82)式)とを読み出して、行列M2の式に重み行列Rの要素値を代入して、行列M2を生成し、第9データ格納部702に格納する(ステップS69)。
【0180】
その後、第3行列生成部707は、第7データ格納部706に格納されている行列M1と、第9データ格納部702に格納されている行列M2とを加算することで行列Mを生成し、第8データ格納部708に格納する(ステップS71)。
【0181】
このような処理を実施することで、行列M及びベクトルbが生成されて、図5のエンジン制御装置で処理される。
【0182】
[制約条件を考慮する場合]
制約条件ありの場合には、図18に示すようなオフライン行列生成装置800が用いられる。図16に示したオフライン行列生成装置700との差は、第1の実施の形態において制約条件を考慮する場合に導入された第4変形処理部501を導入した点である。すなわち、第4変形処理部501は、入力データ格納部102に格納されているデータから、Vtopbar、Vunderbar、Wtopbar及びWunderbarを生成し、第8データ格納部708に格納する。
【0183】
従って制約条件を考慮する場合の処理フローは、図19に示すように、第4変形処理部501が実施する制約1次近似演算を実施するステップであるステップS73が追加された点が、図17と異なる。ステップS73は、図8のステップS39と同様であり、(63)乃至(66)式で表されるベクトルを生成し、第8データ格納部708に格納する。
【0184】
このような処理を実施することで、行列M及びベクトルbと制約条件に関係するVtopbar、Vunderbar、Wtopbar及びWunderbarが生成されて、図9のエンジン制御装置で処理される。
【0185】
[実施の形態3]
第1及び第2の実施の形態では、重み行列Q、R及びSの要素値を埋め込んだ上で行列M及びベクトルbを生成していた。従って、実際のエンジン制御装置の代わりにシミュレーションを行って当該重み行列の要素値の適否を判断する際、当該重み行列の要素値が適切ではないと判断されると、行列M及びベクトルbの生成から処理を行うことになる。これでは適切な行列M及びベクトルbを生成する際にかかる時間が長くなってしまう。そこで、以下のような工夫を行うことで、繰り返し行列及びベクトルを生成することを回避でき、シミュレーションにおいて重み行列の要素値のみを変更すれば良くなる。
【0186】
具体的には、評価関数Jの一部分J’を以下のように分割する。
【数80】

【0187】
すなわち、基本的にはJ1を重み行列の要素毎に項をグループ化する。具体的には、J3は重み行列Qの要素q1が乗じられている項を含み、J4は、重み行列Qの要素q2が乗じられている項を含み、J5は、重み行列Sの要素s1が乗じられている項を含み、J6は、重み行列Sの要素s2が乗じられている項を含む。2入力2出力系以外であっても同様に分割する。なお、J2については第2の実施の形態と同様である。なお、制約条件についても第2の実施の形態と同様である。
【0188】
従って、評価関数Jの最小化は、第2の実施の形態と同様に、以下の偏微分を算出することに分解される。
【数81】

【0189】
但し、重み行列の要素値については変数扱いにするため、以下のように例えばJ3であればq1を除外した部分をJ31として取り扱い、偏微分の式を以下のように用意する。
【数82】

【数83】

【0190】
(95)式のような偏微分の式をu1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)の各々について用意しておき、(37)式及び(37)式における係数を代入し、さらに整理する。そして、第2の実施の形態と同様に、u1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)についての係数を抽出して行列M3を生成し、定数項を抽出してベクトルb3を生成する。
【0191】
J4についても重み行列の要素を除外した部分J41についても、(95)式のような偏微分の式をu1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)の各々について用意しておき、(37)式及び(37)式における係数を代入し、さらに整理する。そして、第2の実施の形態と同様に、u1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)についての係数を抽出して行列M4を生成し、定数項を抽出してベクトルb4を生成する。
【0192】
J5及びJ6についても同様にして、行列M5及びベクトルb5、行列M6及びベクトルb6を生成する。
【0193】
最終的に、生成すべき行列M及びベクトルbは、以下のように表される。
M=q1M3+q2M4+s1M5+s2M6+M2 (93)
b=q1b3+q2b4+s1b5+s2b6 (94)
【0194】
但し、このように加算せず、個々の行列及びベクトルを、重み行列の要素と対応付けて保存しておけばよい。そうすれば、シミュレーション実施前に、行列S、Q及びRを設定して、行列M及びベクトルbを(93)式及び(94)式で生成してから、シミュレーションを実施すればよい。
【0195】
例えば、行列A及びBが以下のように設定され、Hp=4、Hc=2と設定され、行列Q,R及びSが以下のような2行2列の対角行列であるものとする。
【数84】

【数85】

【0196】
そして(37)式が、(83)式乃至(90)式であったとすると、J31の偏微分の結果は以下のようになる。
【数86】

【0197】
従って、行列M3及びベクトルb3については以下のように表される。
【数87】

【数88】

【0198】
また、J41の偏微分の結果は以下のようになる。
【数89】

【0199】
従って、行列M4及びベクトルb4については以下のように表される。
【数90】

【数91】

【0200】
さらに、J51の偏微分の結果は以下のようになる。
【数92】

【0201】
従って、行列M5及びベクトルb5については以下のように表される。
【数93】

【数94】

【0202】
また、J61の偏微分の結果は以下のようになる。
【数95】

【0203】
従って、行列M6及びベクトルb6については以下のように表される。
【数96】

【数97】

【0204】
[制約条件を考慮しない場合]
次に、このような行列M2乃至M6及びベクトルb3乃至b6を生成するためのオフライン行列生成装置900の構成例(制約条件無し)を図20に示す。オフライン行列生成装置900は、入力部101と、入力データ格納部102と、第1変形処理部103と、第1データ格納部104と、第2代入処理部901と、第11データ格納部902と、第4行列生成部903と、第12データ格納部904と、第5行列生成部905と、第13データ格納部906とを有する。入力部101、入力データ格納部102、第1変形処理部103及び第1データ格納部104については、第1の実施の形態で示したものとほぼ同じである。
【0205】
入力部101は、例えばユーザからの入力データである行列A、B、Δτの入力を受け付け、入力データ格納部102に格納する。入力データ格納部102は、これらのデータに加えて解くべき連立方程式を表すデータ((8)式及び(9)式、2入力2出力系であれば(15)乃至(18)式)と、(95)式等の、評価関数の部分J31乃至J61を偏微分した式及び行列M2のデータをも格納している。行列M2のデータについては、重み行列Rが変数扱いで、Hp及びHcが確定しているので、行列M2のデータについては処理せずとも良い。また、解くべき連立方程式のデータ等についても入力部101から入力されることもある。さらに、第1変形処理部103は、入力データ格納部102に格納されたデータを用いて第1変形処理を実施し、処理結果を第1データ格納部104に格納する。なお、行列A及びBなどの要素値などを、関係する連立方程式に代入する処理をも実施する。
【0206】
第2代入処理部901は、入力データ格納部102と第1データ格納部104とに格納されているデータを用いて、上で述べたような(37)式とその係数を、(95)式等に代入する処理を実施して、処理結果を第11データ格納部902に格納する。
【0207】
第4行列生成部903は、第11データ格納部902に格納されているデータを用いて、行列M3、M4、M5及びM6と、ベクトルb3、b4、b5及びb6を生成する処理を実施し、第12データ格納部904に格納する。第5行列生成部905は、入力データ格納部102及び第12データ格納部904に格納されているデータを用いて、(93)式及び(94)式の演算を実施して、演算結果を第13データ格納部906に格納する。このようにすれば、重み行列Q,S及びRの要素が変数化された状態の行列M及びベクトルbが、第13データ格納部906に格納されており、シミュレーションなどに用いることができるようになる。
【0208】
次に、図20に示したオフライン行列生成装置900の処理フローを図21に示す。まず、入力部101は、ユーザからの入力データである行列A、B、Δτの入力を受け付け、入力データ格納部102に格納する(図21:ステップS81)。解くべき連立方程式のデータについても入力部101から入力され、入力データ格納部102に格納される場合もある。
【0209】
そして、第1変形処理部103は、入力データ格納部102に格納されたデータを用いて、最適出力状態x*(i)についての第1変形処理を実施し、処理結果である一次式群(すなわち(37)式)を第1データ格納部104に格納する(ステップS83)。本ステップは、ステップS3とほぼ同様であるから説明を省略する。但し、行列A及びB等のデータについても、例えば本ステップで代入した上で処理する。これより前に代入しても良い。
【0210】
そして、第2代入処理部901は、入力データ格納部102から、(92)式等のデータ(すなわち評価関数Jの部分J31乃至J61についての偏微分の式)を読み出し、第1データ格納部104から第1変形処理の処理結果である一次式群のデータを読み出して、第1変形処理の処理結果である一次式群及びその係数を、(92)式等に代入し、整理する代入処理を実施し、処理結果を第11データ格納部902に格納する(ステップS85)。
【0211】
さらに、第4行列生成部903は、第11データ格納部902に格納されている代入処理の処理結果から、u1*(0),u2*(0),...,u1*(Hc−1)及びu2*(Hc−1)についての係数値を抽出して行列M3乃至M6を生成し、さらに定数項を抽出して符号を反転させてベクトルb3乃至b6を生成し、第12データ格納部904に格納する(ステップS87)。
【0212】
その後、第5行列生成部905は、第12データ格納部904に格納されている行列M3乃至M6に対して、対応する重み行列Q及びSの要素を乗じると共に、入力データ格納部102に格納されている行列M2を加算して行列Mを生成し、第13データ格納部906に格納する(ステップS89)。すなわち、q1M3+q2M4+s1M5+s2M6+M2により行列Mを生成する。
【0213】
さらに、第5行列生成部905は、第12データ格納部904に格納されているベクトルb3乃至b6に対して、対応する重み行列Q及びSの要素を乗じることでベクトルbを生成し、第13データ格納部906に格納する(ステップS91)。すなわち、q1b3+q2b4+s1b5+s2b6によりベクトルbを生成する。
【0214】
このような処理を実施することで、重み行列Q、S及びRの要素が変数化された行列M及びベクトルbが生成されて、シミュレーションにおいて重み行列の調整を実施することが容易になる。
【0215】
なお、ステップS89及びS91については、シミュレーションにおいて実施するようにしても良い。
【0216】
[制約条件を考慮する場合]
制約条件ありの場合には、図22に示すようなオフライン行列生成装置1100が用いられる。図20に示したオフライン行列生成装置900との差は、第1の実施の形態において制約条件を考慮する場合に導入された第4変形処理部501を導入した点である。すなわち、第4変形処理部501は、入力データ格納部102に格納されているデータから、Vtopbar、Vunderbar、Wtopbar及びWunderbarを生成し、第13データ格納部906に格納する。
【0217】
従って制約条件を考慮する場合の処理フローは、図23に示すように、第4変形処理部501が実施する制約1次近似演算を実施するステップであるステップS93が追加された点が、図21と異なる。ステップS93は、図8のステップS39と同様であり、(63)乃至(66)式で表されるベクトルを生成し、第13データ格納部906に格納する。
【0218】
このような処理を実施することで、重み行列Q、R及びSの要素が変数化された行列M及びベクトルbと、制約条件に関係するVtopbar、Vunderbar、Wtopbar及びWunderbarとが生成されて、シミュレーションにおいて用いられる。
【0219】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、機能ブロック図及びブロック線図は一例であって、必ずしも実際のプログラムモジュール構成と一致しない場合もある。また、処理フローについても、処理結果が変わらない限り、並列実施したり、処理順番を入れ替えるなどの変形が可能である。さらに、上ではエンジン制御装置への適用を述べたが、他のプラントの制御装置への適用も可能である。
【0220】
なお、上で述べたオフライン行列生成装置100、500乃至1100は、コンピュータ装置であって、図24に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【0221】
また、上で述べたエンジン制御装置1000は、コンピュータ装置であって、図25に示すように、RAM(Random Access Memory)4501とプロセッサ4503とROM(Read Only Memory)4507とセンサ群4515とがバス4519で接続されている。本実施の形態における処理を実施するための制御プログラム及び存在している場合にはオペレーティング・システム(OS:Operating System))は、ROM4507に格納されており、プロセッサ4503により実行される際にはROM4507からRAM4501に読み出される。プロセッサ4503は、センサ群4515(例えば、吸気圧センサ及び新気量センサ。場合によっては燃料噴射量測定部及びエンジン回転数測定部など。)を制御して、測定値を取得する。また、処理途中のデータについては、RAM4501に格納される。なお、プロセッサ4503は、ROM4507を含む場合もあり、さらに、RAM4501を含む場合もある。本技術の実施の形態では、上で述べた処理を実施するための制御プログラムは、コンピュータ読み取り可能なリムーバブル・ディスクに格納されて頒布され、ROMライタによってROM4507に書き込まれる場合もある。このようなコンピュータ装置は、上で述べたプロセッサ4503、RAM4501、ROM4507などのハードウエアと制御プログラム(場合によってはOSも)とが有機的に協働することにより、上で述べたような各種機能を実現する。
【0222】
以上述べた本実施の形態をまとめると以下のようになる。
【0223】
本実施の形態の第1の態様に係る行列生成方法は、(A)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)出力状態の目標値と出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって第1のラグランジュ乗数と第2のラグランジュ乗数と解入力との関係を表す第1の条件式と、
(4)第1のラグランジュ乗数とハミルトニアンの出力状態についての偏微分との関係を表す第2の条件式と、
(5)第1のラグランジュ乗数の予測期間後の値と、出力状態の目標値と予測期間後の解出力状態との差に関する関数との関係式と、
を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第1の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部から第2の条件式及び関係式を読み出して、第2の条件式及び関係式を、各時刻における第1のラグランジュ乗数を目標値と解出力状態とで表す第2の一次式群に変換し、データ格納部に格納する処理と、(C)データ格納部に格納されている第1の一次式群を第2の一次式群に代入することで、各時刻における第1のラグランジュ乗数を目標値と解入力と出力状態とで表す第3の一次式群に変換し、データ格納部に格納する処理と、(D)データ格納部から第1の条件式を読み出して、第2のラグランジュ乗数の項を除外した第1の条件式に、データ格納部に格納されている第3の一次式群を代入することで、目標値と解入力と出力状態との各時刻における関係を表す第4の一次式群に変換し、データ格納部に格納する処理と、(E)データ格納部に格納されている第4の一次式群を、係数行列と、制御期間内における解入力についてのベクトルとの積が、目標値と出力状態とについての関数ベクトルと等式で表されるように変形して、係数行列と関数ベクトルとをデータ格納部に格納する処理とを含む。
【0224】
このようにすることで係数行列及び関数ベクトルが大幅にコンパクト化されており、係数行列と制御期間内における解入力についてのベクトルとの積が関数ベクトルと等式で結ぶことによって表される連立一次方程式を高速に解くことができるようになる。
【0225】
また、実施の形態の第1の態様に係る行列生成方法は、(F)
制約条件に含まれる上記入力の下限値に関連する第2のラグランジュ乗数を解入力の第1の一次式で近似した場合における当該第1の一次式の定数項であって制約条件に含まれる上記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第1の制約ベクトルと、
第1の一次式における解入力の係数であって制約条件に含まれる上記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルと、
制約条件に含まれる上記入力の上限値に関連する第2のラグランジュ乗数を解入力の第2の一次式で近似した場合における当該第2の一次式の定数項であって制約条件に含まれる上記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第3の制約ベクトルと、
第2の一次式における解入力の係数であって制約条件に含まれる上記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第4の制約ベクトルと、
を生成し、データ格納部に格納する処理をさらに含むようにしても良い。
【0226】
このようにすれば、簡単に制約条件を考慮した演算を実施できるようになる。
【0227】
実施の形態の第2の態様に係る行列生成方法は、(A)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)出力状態の目標値と出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって第1のラグランジュ乗数と第2のラグランジュ乗数と解入力との関係を表す第1の条件式と、
(4)第1のラグランジュ乗数とハミルトニアンの出力状態についての偏微分との関係を表す第2の条件式と、
(5)第1のラグランジュ乗数の予測期間後の値と、出力状態の目標値と予測期間後の解出力状態との差に関する関数との関係式と、
(6)制約条件に含まれる上記入力の下限値に関連する第2のラグランジュ乗数を解入力の第1の一次式で近似した場合における当該第1の一次式群と、制約条件に含まれる上記入力の上限値に関連する第2のラグランジュ乗数を解入力の第2の一次式で近似した場合における当該第2の一次式群と、
を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第3の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部から第2の条件式及び関係式を読み出して、第2の条件式及び関係式を、各時刻における第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第4の一次式群に変換し、データ格納部に格納する処理と、(C)データ格納部に格納されている第3の一次式群を第4の一次式群に代入することで、各時刻における第1のラグランジュ乗数を目標値と解入力と出力状態とで表す第5の一次式群に変換し、データ格納部に格納する処理と、(D)データ格納部に格納されている第3の一次式群に対して、データ格納部に格納されている第5の一次式群、第1の一次式群及び第2の一次式群を代入することで、目標値と解入力と出力状態との各時刻における関係を表す第6の一次式群に変換し、データ格納部に格納する処理と、(E)データ格納部に格納されている第6の一次式群を、係数行列と、制御期間内における解入力についてのベクトルとの積が、目標値と出力状態とについての関数ベクトルと等式で表されるように変形して、係数行列と関数ベクトルとをデータ格納部に格納する処理とを含む。
【0228】
制約条件を考慮する場合には、このような形で(1)乃至(6)の式を変形しても、係数行列及び関数ベクトルとが大幅にコンパクト化されるようになる。
【0229】
本実施の形態の第3の態様に係るプラント制御方法は、(A)制御対象であるプラントの現在の出力状態と現在の目標値とを取得する処理と、(B)
(1)プラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)出力状態の目標値と出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの前記入力についての偏微分であって第1のラグランジュ乗数と第2のラグランジュ乗数と解入力との関係を表す第1の条件式と、
(4)第1のラグランジュ乗数とハミルトニアンの出力状態についての偏微分との関係を表す第2の条件式と、
(5)第1のラグランジュ乗数の予測期間後の値と、出力状態の目標値と予測期間後の解出力状態との差に関する関数との関係式と、
等価な一次方程式群であって、係数行列と、制御期間内における解入力についてのベクトルとの積が、目標値と出力状態とについての関数ベクトルと等しくなるように表されている一次方程式群に対して、現在の出力状態と現在の目標値とを代入して解くことによって、制御期間内における解入力を算出する算出処理と、(C)制御期間内における解入力のうち最初の時刻のための解入力を、制御対象のプラントに出力する処理とを含む。
【0230】
一次方程式群は、元の(1)乃至(5)の式と比して大幅にコンパクト化されており、通常どおり演算を行って一次方程式群を解いたとしても短時間で解入力を得ることができるようになる。
【0231】
上で述べた算出処理が、(b1)制御対象のプラントの解入力に対して上限値及び下限値を含む制約条件が設定されている場合に、
(6)制約条件に含まれる入力の下限値に関連する第2のラグランジュ乗数を解入力の第1の一次式で近似した場合における当該第1の一次式における解入力の係数であって制約条件に含まれる上記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第1の制約ベクトルに対して、1単位時間前に計算された対応時刻の解入力を設定し、対角行列化することで得られる第1の行列と、
(7)制約条件に含まれる上記入力の上限値に関連する第2のラグランジュ乗数を解入力の第2の一次式で近似した場合における当該第2の一次式における解入力の係数であって制約条件に含まれる上記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルに対して、1単位時間前に計算された対応時刻の解入力を設定し、対角行列化することで得られる第2の行列と、
を生成し、係数行列から第1の行列を差し引き、第2の行列を加算する処理と、(b2)
(8)制約条件に含まれる上記入力の下限値に関連する第2のラグランジュ乗数を解入力の第1の一次式で近似した場合における当該第1の一次式における定数項であって制約条件に含まれる上記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項に対して1単位時間前に計算された対応時刻の解入力を設定して各時刻について並べた第1のベクトルと、
(9)制約条件に含まれる上記入力の上限値に関連する第2のラグランジュ乗数を解入力の第2の一次式で近似した場合における当該第2の一次式における定数項であって制約条件に含まれる上記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項に対して1単位時間前に計算された対応時刻の解入力を設定して各時刻について並べた第2のベクトルと、
を生成し、関数ベクトルに第1ベクトルを加算して第2ベクトルを差し引く処理とを含むようにしても良い。
【0232】
このようにすれば、少ない演算で制約条件を考慮した形で解入力を出力できるようになる。
【0233】
本実施の形態の第4の態様に係るプラント制御装置(図26)は、(A)制御対象であるプラントの現在の出力状態と現在の目標値とを取得する取得部(図26:3100)と、(B)
(1)プラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)出力状態の目標値と出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの上記入力についての偏微分であって第1のラグランジュ乗数と第2のラグランジュ乗数と解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
等価な一次方程式群であって、係数行列と、制御期間内における解入力についてのベクトルとの積が、目標値と出力状態とについての関数ベクトルと等しくなるように表されている一次方程式群を格納するデータ格納部(図26:3400)と、(C)データ格納部から一次方程式群を読み出して、一次方程式群に対して、現在の出力状態と現在の目標値とを代入して解くことによって、制御期間内における解入力を算出する演算部(図26:3200)と、(D)制御期間内における解入力のうち最初の時刻のための解入力を、制御対象のプラントに出力する出力部(図26:3300)とを有する。
【0234】
本実施の形態の第5の態様に係る行列生成方法は、(A)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)出力状態の目標値と解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、出力状態の目標値と予測区間後における解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、解入力の二乗を第3の重み行列で重み付けして初期時刻から予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち第1の項と第2の項とを、初期時刻における解入力から制御区間後の1単位時間前の時点における解入力までの各解入力で偏微分することで得られる、解出力状態についての第1の一次式群と、
(4)第3の項を初期時刻における解入力から制御区間後の1単位時間前の時点における解入力までの各解入力で偏微分することで得られ且つ第3の重み行列の要素値、制御区間の値及び予測区間の値とで決定される行列要素を有する第1の行列と、
を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第2の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部に格納されている第2の一次式群及び第2の一次式群における解入力の係数値を、データ格納部に格納されている第1の一次式群に代入することで第3の一次式群を生成し、データ格納部に格納する処理と、(C)データ格納部に格納されている第3の一次式群における各解入力の項の係数を抽出して第2の行列を生成し、第3の一次式群における解入力の項以外の項を抽出してベクトルを生成し、データ格納部に格納する処理と、(D)データ格納部に格納されている第1の行列と第2の行列とを加算して、第3の行列を生成し、データ格納部に格納する処理とを含む。
【0235】
このような処理を行えば演算量が削減されているので、高速に第3の行列及びベクトルを生成することができるようになる。
【0236】
本実施の形態の第6の態様に係る行列生成方法は、(A)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)出力状態の目標値と解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、出力状態の目標値と予測区間後における解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、解入力の二乗を第3の重み行列で重み付けして初期時刻から予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち第1の項及び第2の項を、係数として乗じられている、第1の重み行列及び第2の重み行列の要素毎に分類することで得られ且つ当該要素が除外された複数の式の各々を、初期時刻における解入力から制御区間後の1単位時間前の時点における解入力までの各解入力で偏微分することで得られる、解出力状態についての第1の一次式群と、
を格納するデータ格納部から、状態方程式及び初期条件式とを読み出して、状態方程式及び初期条件式を、各時刻における解出力状態を出力状態と解入力とで表す第2の一次式群に変換し、データ格納部に格納する処理と、(B)データ格納部に格納されている第2の一次式群及び第2の一次式群における解入力の係数値を、データ格納部に格納されている第1の一次式群に代入することで、複数の式の各々について第3の一次式群を生成し、データ格納部に格納する処理と、(C)データ格納部に格納されている第3の一次式群における各解入力の項の係数を複数の式の各々について抽出して複数の式の各々について行列を生成し、第3の一次式群における解入力の項以外の項を複数の式の各々について抽出して複数の式の各々についてベクトルを生成し、データ格納部に格納する処理とを含む。
【0237】
このようにすれば、行列及びベクトルを生成し直すことなく、後に実施するシミュレーションなどにおいて重み行列の要素値を調整することができるようになる。なお、制約条件については、本実施の形態の第5及び第6の態様においては、本実施の形態の第1の態様と同様に処理することができる。
【0238】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【0239】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0240】
(付記1)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第1の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第1の一次式群を前記第2の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第3の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第1の条件式を読み出して、前記第2のラグランジュ乗数の項を除外した第1の条件式に、前記データ格納部に格納されている前記第3の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第4の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第4の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【0241】
(付記2)
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式の定数項であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第1の制約ベクトルと、
前記第1の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルと、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式の定数項であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第3の制約ベクトルと、
前記第2の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第4の制約ベクトルと、
を生成し、前記データ格納部に格納する処理、
をさらに前記コンピュータに実行させるための付記1記載のプログラム。
【0242】
(付記3)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
(6)前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式群と、前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式群と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第3の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第4の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群を前記第4の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第5の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群に対して、前記データ格納部に格納されている前記第5の一次式群、前記第1の一次式群及び前記第2の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第6の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第6の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【0243】
(付記4)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第1の一次式群に変換し、前記データ格納部に格納する第1変形処理部と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第2の一次式群に変換し、前記データ格納部に格納する第2変形処理部と、
前記データ格納部に格納されている前記第1の一次式群を前記第2の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第3の一次式群に変換し、前記データ格納部に格納する第3変形処理部と、
前記データ格納部から前記第1の条件式を読み出して、前記第2のラグランジュ乗数の項を除外した第1の条件式に、前記データ格納部に格納されている前記第3の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第4の一次式群に変換し、前記データ格納部に格納する式生成部と、
前記データ格納部に格納されている前記第4の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する行列生成部と、
を有する行列生成装置。
【0244】
(付記5)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
(6)前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式群と、前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式群と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第3の一次式群に変換し、前記データ格納部に格納する第1変形処理部と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第4の一次式群に変換し、前記データ格納部に格納する第2変形処理部と、
前記データ格納部に格納されている前記第3の一次式群を前記第4の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第5の一次式群に変換し、前記データ格納部に格納する第3変形処理部と、
前記データ格納部に格納されている前記第3の一次式群に対して、前記データ格納部に格納されている前記第5の一次式群、前記第1の一次式群及び前記第2の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第6の一次式群に変換し、前記データ格納部に格納する式生成部と、
前記データ格納部に格納されている前記第6の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する行列生成部と、
を有する行列生成装置。
【0245】
(付記6)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第1の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第1の一次式群を前記第2の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第3の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第1の条件式を読み出して、前記第2のラグランジュ乗数の項を除外した第1の条件式に、前記データ格納部に格納されている前記第3の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第4の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第4の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する処理と、
を、コンピュータが実行する行列生成方法。
【0246】
(付記7)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
(6)前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式群と、前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式群と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第3の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第4の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群を前記第4の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第5の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群に対して、前記データ格納部に格納されている前記第5の一次式群、前記第1の一次式群及び前記第2の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第6の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第6の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する処理と、
を、コンピュータが実行する行列生成方法。
【0247】
(付記8)
制御対象であるプラントの現在の出力状態と現在の目標値とを取得する処理と、
(1)前記プラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
等価な一次方程式群であって、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等しくなるように表されている前記一次方程式群に対して、前記現在の出力状態と前記現在の目標値とを代入して解くことによって、前記制御期間内における解入力を算出する算出処理と、
前記制御期間内における解入力のうち最初の時刻のための解入力を、前記制御対象のプラントに出力する処理と、
を、プロセッサに実行させるためのプログラム。
【0248】
(付記9)
前記算出処理が、
前記制御対象のプラントの解入力に対して上限値及び下限値を含む制約条件が設定されている場合に、
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第1の制約ベクトルに対して、前記1単位時間前に計算された対応時刻の解入力を設定し、対角行列化することで得られる第1の行列と、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルに対して、前記1単位時間前に計算された対応時刻の解入力を設定し、対角行列化することで得られる第2の行列と、
を生成し、前記係数行列から前記第1の行列を差し引き、前記第2の行列を加算する処理と、
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式における定数項であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項に対して前記1単位時間前に計算された対応時刻の解入力を設定して各時刻について並べた第1のベクトルと、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式における定数項であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項に対して前記1単位時間前に計算された対応時刻の解入力を設定して各時刻について並べた第2のベクトルと、
を生成し、前記関数ベクトルに前記第1ベクトルを加算して前記第2ベクトルを差し引く処理と、
を含む付記8記載のプログラム。
【0249】
(付記10)
制御対象であるプラントの現在の出力状態と現在の目標値とを取得する取得部と、
(1)前記プラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
等価な一次方程式群であって、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等しくなるように表されている前記一次方程式群を格納するデータ格納部と、
前記データ格納部から前記一次方程式群を読み出して、前記一次方程式群に対して、前記現在の出力状態と前記現在の目標値とを代入して解くことによって、前記制御期間内における解入力を算出する演算部と、
前記制御期間内における解入力のうち最初の時刻のための解入力を、前記制御対象のプラントに出力する出力部と、
を有するプラント制御装置。
【0250】
(付記11)
制御対象であるプラントの現在の出力状態と現在の目標値とを取得する処理と、
(1)前記プラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
等価な一次方程式群であって、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等しくなるように表されている前記一次方程式群に対して、前記現在の出力状態と前記現在の目標値とを代入して解くことによって、前記制御期間内における解入力を算出する算出処理と、
前記制御期間内における解入力のうち最初の時刻のための解入力を、前記制御対象のプラントに出力する処理と、
を、プロセッサが実行する制御方法。
【0251】
(付記12)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項と前記第2の項とを、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
(4)前記第3の項を前記初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られ且つ前記第3の重み行列の要素値、前記制御区間の値及び前記予測区間の値とで決定される行列要素を有する第1の行列と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで第3の一次式群を生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を抽出して第2の行列を生成し、前記第3の一次式群における前記解入力の項以外の項を抽出してベクトルを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第1の行列と前記第2の行列とを加算して、第3の行列を生成し、前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【0252】
(付記13)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項及び前記第2の項を、係数として乗じられている、前記第1の重み行列及び前記第2の重み行列の要素毎に分類することで得られ且つ当該要素が除外された複数の式の各々を、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで、前記複数の式の各々について第3の一次式群を生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を前記複数の式の各々について抽出して前記複数の式の各々について行列を生成し、前記第3の一次式群における前記解入力の項以外の項を前記複数の式の各々について抽出して前記複数の式の各々についてベクトルを生成し、前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【0253】
(付記14)
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式の定数項であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第1の制約ベクトルと、
前記第1の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルと、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式の定数項であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第3の制約ベクトルと、
前記第2の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第4の制約ベクトルと、
を生成し、前記データ格納部に格納する処理、
をさらに前記コンピュータに実行させるための付記12又は13記載のプログラム。
【0254】
(付記15)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項と前記第2の項とを、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
(4)前記第3の項を前記初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られ且つ前記第3の重み行列の要素値、前記制御区間の値及び前記予測区間の値とで決定される行列要素を有する第1の行列と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する変形部と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで第3の一次式群を生成し、前記データ格納部に格納し、前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を抽出して第2の行列を生成し、前記第3の一次式群における前記解入力の項以外の項を抽出してベクトルを生成し、前記データ格納部に格納し、前記データ格納部に格納されている前記第1の行列と前記第2の行列とを加算して、第3の行列を生成し、前記データ格納部に格納する生成部と、
を有する行列生成装置。
【0255】
(付記16)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項及び前記第2の項を、係数として乗じられている、前記第1の重み行列及び前記第2の重み行列の要素毎に分類することで得られ且つ当該要素が除外された複数の式の各々を、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する変形部と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで、前記複数の式の各々について第3の一次式群を生成し、前記データ格納部に格納し、前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を前記複数の式の各々について抽出して前記複数の式の各々について行列を生成し、前記第3の一次式群における前記解入力の項以外の項を前記複数の式の各々について抽出して前記複数の式の各々についてベクトルを生成し、前記データ格納部に格納する生成部と、
を有する行列生成装置。
【0256】
(付記17)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項と前記第2の項とを、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
(4)前記第3の項を前記初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られ且つ前記第3の重み行列の要素値、前記制御区間の値及び前記予測区間の値とで決定される行列要素を有する第1の行列と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで第3の一次式群を生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を抽出して第2の行列を生成し、前記第3の一次式群における前記解入力の項以外の項を抽出してベクトルを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第1の行列と前記第2の行列とを加算して、第3の行列を生成し、前記データ格納部に格納する処理と、
を、コンピュータが実行する行列生成方法。
【0257】
(付記18)
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項及び前記第2の項を、係数として乗じられている、前記第1の重み行列及び前記第2の重み行列の要素毎に分類することで得られ且つ当該要素が除外された複数の式の各々を、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで、前記複数の式の各々について第3の一次式群を生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を前記複数の式の各々について抽出して前記複数の式の各々について行列を生成し、前記第3の一次式群における前記解入力の項以外の項を前記複数の式の各々について抽出して前記複数の式の各々についてベクトルを生成し、前記データ格納部に格納する処理と、
を、コンピュータが実行する行列生成方法。
【符号の説明】
【0258】
100 オフライン行列生成装置
101 入力部
102 入力データ格納部
103 第1変形処理部
104 第1データ格納部
105 第2変形処理部
106 第2データ格納部
107 第3変形処理部
108 第3データ格納部
109 連立方程式生成部
110 第4データ格納部
111 行列生成部
112 第5データ格納部
501 第4変形処理部
210 計画器
220 第1モデル予測制御部
230 プラント
240 第2モデル予測制御部
502 第2連立方程式生成部
701 第2行列生成部
702 第9データ格納部
703 代入処理部
704 第6データ格納部
705 第1行列生成部
706 第7データ格納部
707 第3行列生成部
708 第8データ格納部
901 第2代入処理部
902 第11データ格納部
903 第4行列生成部
904 第12データ格納部
905 第5行列生成部
906 第13データ格納部

【特許請求の範囲】
【請求項1】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第1の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第1の一次式群を前記第2の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第3の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第1の条件式を読み出して、前記第2のラグランジュ乗数の項を除外した第1の条件式に、前記データ格納部に格納されている前記第3の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第4の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第4の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【請求項2】
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式の定数項であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第1の制約ベクトルと、
前記第1の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルと、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式の定数項であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第3の制約ベクトルと、
前記第2の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第4の制約ベクトルと、
を生成し、前記データ格納部に格納する処理、
をさらに前記コンピュータに実行させるための請求項1記載のプログラム。
【請求項3】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
(6)前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式群と、前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式群と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第3の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第4の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群を前記第4の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第5の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群に対して、前記データ格納部に格納されている前記第5の一次式群、前記第1の一次式群及び前記第2の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第6の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第6の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【請求項4】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第1の一次式群に変換し、前記データ格納部に格納する第1変形処理部と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第2の一次式群に変換し、前記データ格納部に格納する第2変形処理部と、
前記データ格納部に格納されている前記第1の一次式群を前記第2の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第3の一次式群に変換し、前記データ格納部に格納する第3変形処理部と、
前記データ格納部から前記第1の条件式を読み出して、前記第2のラグランジュ乗数の項を除外した第1の条件式に、前記データ格納部に格納されている前記第3の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第4の一次式群に変換し、前記データ格納部に格納する式生成部と、
前記データ格納部に格納されている前記第4の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する行列生成部と、
を有する行列生成装置。
【請求項5】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算に関する第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和に関するハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
(6)前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式群と、前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式群と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第3の一次式群に変換し、前記データ格納部に格納する第1変形処理部と、
前記データ格納部から前記第2の条件式及び前記関係式を読み出して、前記第2の条件式及び前記関係式を、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解出力状態とで表す第4の一次式群に変換し、前記データ格納部に格納する第2変形処理部と、
前記データ格納部に格納されている前記第3の一次式群を前記第4の一次式群に代入することで、各時刻における前記第1のラグランジュ乗数を前記目標値と前記解入力と前記出力状態とで表す第5の一次式群に変換し、前記データ格納部に格納する第3変形処理部と、
前記データ格納部に格納されている前記第3の一次式群に対して、前記データ格納部に格納されている前記第5の一次式群、前記第1の一次式群及び前記第2の一次式群を代入することで、前記目標値と前記解入力と前記出力状態との各時刻における関係を表す第6の一次式群に変換し、前記データ格納部に格納する式生成部と、
前記データ格納部に格納されている前記第6の一次式群を、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等式で表されるように変形して、前記係数行列と前記関数ベクトルとを前記データ格納部に格納する行列生成部と、
を有する行列生成装置。
【請求項6】
制御対象であるプラントの現在の出力状態と現在の目標値とを取得する処理と、
(1)前記プラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
等価な一次方程式群であって、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等しくなるように表されている前記一次方程式群に対して、前記現在の出力状態と前記現在の目標値とを代入して解くことによって、前記制御期間内における解入力を算出する算出処理と、
前記制御期間内における解入力のうち最初の時刻のための解入力を、前記制御対象のプラントに出力する処理と、
を、プロセッサに実行させるためのプログラム。
【請求項7】
前記算出処理が、
前記制御対象のプラントの解入力に対して上限値及び下限値を含む制約条件が設定されている場合に、
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第1の制約ベクトルに対して、前記1単位時間前に計算された対応時刻の解入力を設定し、対角行列化することで得られる第1の行列と、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルに対して、前記1単位時間前に計算された対応時刻の解入力を設定し、対角行列化することで得られる第2の行列と、
を生成し、前記係数行列から前記第1の行列を差し引き、前記第2の行列を加算する処理と、
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式における定数項であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項に対して前記1単位時間前に計算された対応時刻の解入力を設定して各時刻について並べた第1のベクトルと、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式における定数項であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項に対して前記1単位時間前に計算された対応時刻の解入力を設定して各時刻について並べた第2のベクトルと、
を生成し、前記関数ベクトルに前記第1ベクトルを加算して前記第2ベクトルを差し引く処理と、
を含む請求項6記載のプログラム。
【請求項8】
制御対象であるプラントの現在の出力状態と現在の目標値とを取得する取得部と、
(1)前記プラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記出力状態との誤差の二乗及び入力の二乗の重み付け加算を表す第1の関数と、第1のラグランジュ乗数と前記状態方程式との積と、第2のラグランジュ乗数と制約条件に関する第2の関数との積と、の和で表されるハミルトニアンの前記入力についての偏微分であって前記第1のラグランジュ乗数と前記第2のラグランジュ乗数と前記解入力との関係を表す第1の条件式と、
(4)前記第1のラグランジュ乗数と前記ハミルトニアンの前記出力状態についての偏微分との関係を表す第2の条件式と、
(5)前記第1のラグランジュ乗数の予測期間後の値と、前記出力状態の目標値と前記予測期間後の解出力状態との差に関する関数との関係式と、
等価な一次方程式群であって、係数行列と、制御期間内における前記解入力についてのベクトルとの積が、前記目標値と前記出力状態とについての関数ベクトルと等しくなるように表されている前記一次方程式群を格納するデータ格納部と、
前記データ格納部から前記一次方程式群を読み出して、前記一次方程式群に対して、前記現在の出力状態と前記現在の目標値とを代入して解くことによって、前記制御期間内における解入力を算出する演算部と、
前記制御期間内における解入力のうち最初の時刻のための解入力を、前記制御対象のプラントに出力する出力部と、
を有するプラント制御装置。
【請求項9】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項と前記第2の項とを、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
(4)前記第3の項を前記初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られ且つ前記第3の重み行列の要素値、前記制御区間の値及び前記予測区間の値とで決定される行列要素を有する第1の行列と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで第3の一次式群を生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を抽出して第2の行列を生成し、前記第3の一次式群における前記解入力の項以外の項を抽出してベクトルを生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第1の行列と前記第2の行列とを加算して、第3の行列を生成し、前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【請求項10】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項及び前記第2の項を、係数として乗じられている、前記第1の重み行列及び前記第2の重み行列の要素毎に分類することで得られ且つ当該要素が除外された複数の式の各々を、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
を格納するデータ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで、前記複数の式の各々について第3の一次式群を生成し、前記データ格納部に格納する処理と、
前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を前記複数の式の各々について抽出して前記複数の式の各々について行列を生成し、前記第3の一次式群における前記解入力の項以外の項を前記複数の式の各々について抽出して前記複数の式の各々についてベクトルを生成し、前記データ格納部に格納する処理と、
を、コンピュータに実行させるためのプログラム。
【請求項11】
前記制約条件に含まれる前記入力の下限値に関連する前記第2のラグランジュ乗数を前記解入力の第1の一次式で近似した場合における当該第1の一次式の定数項であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第1の制約ベクトルと、
前記第1の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の下限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第2の制約ベクトルと、
前記制約条件に含まれる前記入力の上限値に関連する前記第2のラグランジュ乗数を前記解入力の第2の一次式で近似した場合における当該第2の一次式の定数項であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む定数項を、各時刻について含む第3の制約ベクトルと、
前記第2の一次式における前記解入力の係数であって前記制約条件に含まれる前記入力の上限値と1単位時間前に計算された対応時刻の解入力とを含む係数を、各時刻について含む第4の制約ベクトルと、
を生成し、前記データ格納部に格納する処理、
をさらに前記コンピュータに実行させるための請求項9又は10記載のプログラム。
【請求項12】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項と前記第2の項とを、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
(4)前記第3の項を前記初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られ且つ前記第3の重み行列の要素値、前記制御区間の値及び前記予測区間の値とで決定される行列要素を有する第1の行列と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する変形部と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで第3の一次式群を生成し、前記データ格納部に格納し、前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を抽出して第2の行列を生成し、前記第3の一次式群における前記解入力の項以外の項を抽出してベクトルを生成し、前記データ格納部に格納し、前記データ格納部に格納されている前記第1の行列と前記第2の行列とを加算して、第3の行列を生成し、前記データ格納部に格納する生成部と、
を有する行列生成装置。
【請求項13】
(1)制御対象であるプラントの解出力状態と解入力との関係を表す状態方程式と、
(2)出力状態の初期条件式と、
(3)前記出力状態の目標値と前記解出力状態との誤差の二乗を第1の重み行列で重み付けして初期時刻から1単位時間後の時点から予測区間後の1単位時間前の時点まで加算する第1の項と、前記出力状態の目標値と前記予測区間後における前記解出力状態との誤差の二乗を第2の重み行列で重み付けして加算する第2の項と、前記解入力の二乗を第3の重み行列で重み付けして初期時刻から前記予測区間後の1単位時間前の時点まで加算する第3の項と、制約条件についての第4の項と、を含む評価関数のうち前記第1の項及び前記第2の項を、係数として乗じられている、前記第1の重み行列及び前記第2の重み行列の要素毎に分類することで得られ且つ当該要素が除外された複数の式の各々を、初期時刻における前記解入力から前記制御区間後の1単位時間前の時点における前記解入力までの各前記解入力で偏微分することで得られる、前記解出力状態についての第1の一次式群と、
を格納するデータ格納部と、
前記データ格納部から、前記状態方程式及び前記初期条件式とを読み出して、前記状態方程式及び前記初期条件式を、各時刻における前記解出力状態を前記出力状態と前記解入力とで表す第2の一次式群に変換し、前記データ格納部に格納する変形部と、
前記データ格納部に格納されている前記第2の一次式群及び前記第2の一次式群における前記解入力の係数値を、前記データ格納部に格納されている前記第1の一次式群に代入することで、前記複数の式の各々について第3の一次式群を生成し、前記データ格納部に格納し、前記データ格納部に格納されている前記第3の一次式群における各前記解入力の項の係数を前記複数の式の各々について抽出して前記複数の式の各々について行列を生成し、前記第3の一次式群における前記解入力の項以外の項を前記複数の式の各々について抽出して前記複数の式の各々についてベクトルを生成し、前記データ格納部に格納する生成部と、
を有する行列生成装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate