Adaptive MPC Controllerの使い方について
조회 수: 1 (최근 30일)
이전 댓글 표시
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での実装を考えています。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1734733/image.jpeg)
そこで、この場合の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
Toshinobu Shintai
2024년 7월 17일
「線形の状態方程式のA行列が時間と共に変化する場合にMPCを設計するとき、Adaptive MPCを使用するべきか」という質問に関しましては、おっしゃる通りAdaptive MPCを使用するのがベターな選択です。
提示しましたデモモデルでも、A行列に車両速度が含まれており、速度によって可変な行列になっています。
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Controller Creation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!