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

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

💥💥💞💞欢迎来到本博客❤️❤️💥💥

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

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

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 参考文献

🎉4 Matlab代码实现


💥1 概述

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

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

基于实时迭代的数值鲁棒非线性模型预测控制(NMPC)是一种在控制系统中使用的先进控制技术。它通过使用数学模型来预测系统的未来行为,并根据这些预测结果来生成控制策略,以实现系统的稳定和优化。

在传统的NMPC中,通常使用优化算法来求解非线性优化问题,以生成最优控制策略。然而,在实际应用中,由于模型不确定性、测量误差等因素的存在,传统的NMPC可能会导致控制性能下降甚至系统不稳定。

为了解决这个问题,基于实时迭代的数值鲁棒NMPC方法被提出。该方法通过在每个控制周期内进行迭代优化,将实际系统的测量数据与模型预测进行比较,并根据误差来调整控制策略。这样可以使控制系统更加鲁棒,能够适应模型不确定性和测量误差的影响。

双模稳定预测模型是基于实时迭代的数值鲁棒NMPC的一种扩展方法。它将系统的动态行为建模为两个模式,分别是稳定模式和非稳定模式。在每个控制周期内,通过比较实际系统的测量数据与两个模式的预测结果,确定当前系统处于哪个模式,并相应地调整控制策略。

这种基于实时迭代的数值鲁棒NMPC双模稳定预测模型可以提高控制系统的鲁棒性和稳定性,使其能够在实际应用中更好地适应模型不确定性和测量误差的影响。它在许多领域中都有广泛的应用,如化工过程控制、机械控制、智能交通系统等。

📚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');
 

 

​ 

​ 

🌈3 参考文献

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

[1]谢树光.非线性模型预测控制(NMPC)在微型飞行器自适应控制中的应用[J].  2002.

[2]马乐乐.非线性迭代学习模型预测控制研究[J].[2023-09-19].

[3]马乐乐,刘向杰.变参考轨迹下的鲁棒迭代学习模型预测控制[J].自动化学报, 2019, 45(10).

🎉4 Matlab代码实现

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值