MPCで、2種類のみのmvを出力したいです。
4 views (last 30 days)
Show older comments
現在、simlinkのMPCを用いて、空調制御のシミュレーションを行っています。 その際に、MPCのmvにおいて、連続的なmvではなく2種類のみのmvを出力したいのですが、どうすれば良いでしょうか? 例えば、シミュレーションを行う際に、1~100のmvを用いるのではなく、1と100の2種類のみのmvをシミュレーションに使用したいです。
0 Comments
Accepted Answer
Hiroumi Mita
on 24 May 2018
MPCは、動的なフィードバック制御における最適化問題を逐次的に解きます。
連続変化するMV(操作量)の制御ホライズン数の 操作量ベクトルMV(制御ホライズン数)を計算し、 MV(1)を出力します。
これを逐次的に繰り返します。 操作量ベクトルMVは、連続量であり、0/1や0/100の離散値にはなりません。
もし、ご所望のことをあえてやるとするならば MPCの出力をPWM出力に変更することが考えられます。
ただ、これは通常の使い方ではないので MPCの設計その他に影響し、さまざまな工夫が必要になるでしょう。
【手順】
(1) MPCの出力範囲を[-1,1]に正規化する
(2) MPCの出力をPWM制御として0/1のパルスとして出力する。
More Answers (1)
Hiroumi Mita
on 4 Jun 2018
Q1. 回答で教えていただいた手順でMPCの出力を強制的に2極化した場合、 MPCでの最適化は、本来の連続的な出力と、MPCの外で変換した2極化された出力のどちらで行われるのでしょうか?
A1.MPCの設計は連続系で行われます。
MPCは動的に、逐次制約条件つき二次計画法を解きます 。 MPCの計算のイメージは以下の2次形式評価関数を最小にする 操作量ベクトルu(j)j=1:Lを逐次的に最適化計算します。
操作量ベクトルuは0/1ではなく、実数です。 よって連続的な出力計算されるのが正です。
2次形式評価関数=Sigma(k=1:予測ホライズンN) (weight1*(y*(k)-y^(k))^2)% 制御量の目標値への追従性
+
Sigma(j=1:制御ホライズンM) (weight2*(u(j))^2) %操作量の自乗和
weight1:重み係数1
weight2:重み係数2
y*(k):k番目の設定値
y^(k):プラントモデルにより計算された予測制御量
u(j):j番目の操作量
Q2.また、仮にMPC本来の連続的な出力で最適化が行われるのだとしたら、冒頭の「MPCを用いて、2極化された操作量での最適化」というものは不可能なのでしょうか?
A2. もし、0/1を出力するのならば、最適化計算エンジンは混合整数計画問題を解けるものであることが必要です。しかしMPCの最適化計算エンジンは 2次計画法なので、0/1を計算することは不可能です。
そこで、次のようなアイデアを考えます。 MPCの操作量の出力は-1から1(-100%から100%)のレンジに収まるよう 試行錯誤してチューニングします。
-1から1の値をデューティ比とみなし、PWM(パルス幅変調)制御とします。
それであれば、連続量がチョッピングされたPWMのパルス列になります。 これはモーターの速度やトルク制御でよく使われる手法です。
0 Comments
See Also
Categories
Find more on Refinement in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!