基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)

 ‍个人主页:研学社的博客 

欢迎来到本博客❤️❤️

博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

本文目录如下:

目录

1 概述

2 运行结果

3 Matlab代码实现

4 参考文献


1 概述

本文 T 秒进行 N 次模拟,使用提出的使用多重拍摄的双模 NMPC 方案对倒立摆进行摆动和稳定。

分析了算法计算次数的性能,特别是“前向生成”、“DARE”、“矩阵”、“反演”和“QPsteps”所需的平均计算时间,以及平均“不受约束”和“约束”,所有这些都在结果部分报告。比较了两种不同的方法;标准多重射击NMPC,以及拟议的双模式多重射击NMPC。此外,如本文所述,考虑了两种不同的数值精度(浮点数和双精度数),以评估计算时间的好处。由此得出的结果与本文件表2的结果有关。

详情见参考文献。

2 运行结果

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第1张图片

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第2张图片​ 

%Plot
t=[0:kT-1]*dt;
fig=4;
figure(fig);
subplot(4,1,1);
plot(t(1:end-1),Condition_Numbers(1,:),'-b','LineWidth',1);
hold on
plot(t(1:end-1),Condition_Numbers(2,:),'--r','LineWidth',1);
ylabel('Condition Number of E');
title('Inverted Pendulum Simulation');
lim=axis;
legend('DM NMPC','STD NMPC');
axis([lim(1:2),0,50]);
set(gca,'xtick',[]);
subplot(4,1,2);
plot(t,X(4,:),'-b','LineWidth',1);
hold on
% plot(t,X2(4,:),'--r','LineWidth',1);
hold off
ylabel('Angles (rads)');
legend('\theta');
set(gca,'xtick',[]);
subplot(4,1,3);
plot(t,X(3,:),'-b','LineWidth',1);
hold on
plot(t,Xmax*ones(length(t),1),'-r','LineWidth',2);
plot(t,Xmin*ones(length(t),1),'-r','LineWidth',2);
% plot(t,X2(3,:),'--r','LineWidth',1);
hold off
legend('p','p_{max}/p_{min}');
ylabel('Positions (m)');
set(gca,'xtick',[]);
subplot(4,1,4);
plot(t,U,'-b','LineWidth',1);
hold on
plot(t,Umax*ones(length(t),1),'-r','LineWidth',2);
plot(t,Umin*ones(length(t),1),'-r','LineWidth',2);
% plot(t,U2,'--r','LineWidth',1);
hold off
legend('u','u_{max}/u_{min}');
ylabel('Inputs');
xlabel('Time (s)');

%Compare
Condition_Numbers_Comparison(index,1)=max(Condition_Numbers(1,:));
Condition_Numbers_Comparison(index,2)=max(Condition_Numbers(2,:));

%Save Figure
%filename=sprintf('Condition_Number_Response_Np%d.jpg',Np);
filename=sprintf('results/Condition_Number_Response_Np%d.fig',Np);
saveas(fig,filename);
close all
end
end
% Condition_Numbers_Comparison

latex_preparation
%save('Condition_Numbers.mat','Condition_Numbers_Comparison');
save('results/Condition_Numbers.mat','Condition_Numbers_Comparison');
 

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第3张图片

 基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第4张图片

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第5张图片

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第6张图片​ 

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第7张图片​ 

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第8张图片基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)_第9张图片

3 Matlab代码实现

4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Oscar Julian Gonzalez Villarreal (2019) Dual Mode Stable Prediction Models for Numerically Robust NMPC using Real-Time Iterations

你可能感兴趣的:(#,数学建模比赛,#,lstm,人工智能,rnn)