Adaptive MPC Controllerの使い方について

MPCを勉強中ですので至らない点があると思いますが質問させていただきます。Adaptive MPC Controllerに関する動画(Adaptive MPC Design with Simulink - File Exchange - MATLAB Central (mathworks.com))を参考にしています。
以下に示すのが、私がシミュレーションしているモデルです。ここで、State SpaceブロックのB行列の計算にもちいる変数(Tx)がtimeseriesの時系列データとなっています。そのため、MPC Controllerブロックではシミュレーションできないと認識しています。
以上の質問からそのように思い、Adaptive MPC Controllerでの実装を考えています。
そこで、この場合のAdaptive MPC Controllerの使用が正しいのかと、State Spaceブロックはどのように置き換えればよいのか教えていただきたいです。
下に、updateModelの中身と、Adaptive MPCのコントローラのプログラムを添付させていただきます。
function [A,B,C,D,U,Y,X,DX] = updateModel(Tx,mass)
% 状態空間モデルの行列を定義
A = [0, 1; 0, 0];
B = [0; Tx/mass];
C = [1, 0];
D = 0;
U = 0;
X = 0;
Y = 0;
DX = 0;
end
%適応MPCコントローラのプログラム
mass = 4.81; % 質量
Ts = 0.1; % サンプリング時間
char Tx = load('MPC','Tx');
A = [0 1; 0 0];
B = [0; Tx/mass];
C = [1 0];
D = 0;
% 状態空間モデルの定義
plantc = ss(A, B, C, D);
plantd = c2d(plantc, Ts);
% MPCオブジェクトの作成
mpcobj = mpc(plantd);
% 非因果状態を除去
mpcobj.Model.Plant = minreal(mpcobj.Model.Plant);
% シミュレーションの準備
assignin('base', 'mass', mass);
assignin('base', 'mpcobj', mpcobj);
assignin('base', 'A', A);
assignin('base', 'C', C);
assignin('base', 'D', D);

4 Comments

ご参考までに、以下のデモモデルにて様々なタイプのMPC設計例をまとめています。Adaptive MPCは適応MPCの章で説明しています。
ULRを参考にもう一度復習をさせていただきました。
その中にあったMPC設計例の動画で、車両の速度を簡単のために進行方向速度がVで一定とすると述べていましたが、Vが可変である場合はどのように設計すればよいのか教えていただきたいです。
可変である場合には下のコードのようにA行列が可変になると思います。
この場合はAdaptive MPCを使用するべきなのでしょうか。
Ts = 0.2;
A = [0 V ; 0 0];
B = [0 ; 1];
C = [1 ; 0];
D = 0;
plantc = ss(A,B,C,D);
plantd = c2d(plantc,Ts);
「線形の状態方程式のA行列が時間と共に変化する場合にMPCを設計するとき、Adaptive MPCを使用するべきか」という質問に関しましては、おっしゃる通りAdaptive MPCを使用するのがベターな選択です。
提示しましたデモモデルでも、A行列に車両速度が含まれており、速度によって可変な行列になっています。
Shintai様
Adaptive MPCの使用に関して教えていただき、ありがとうございます。
デモモデル等を見ながら実装してみようと思います。
またわからない箇所が出たら質問させていただきます。

Sign in to comment.

Answers (0)

Products

Release

R2023b

Asked:

on 16 Jul 2024

Commented:

on 17 Jul 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!