💥1 概述
本文 T 秒进行 N 次模拟,使用提出的使用多重拍摄的双模 NMPC 方案对倒立摆进行摆动和稳定。
分析了算法计算次数的性能,特别是“前向生成”、“DARE”、“矩阵”、“反演”和“QPsteps”所需的平均计算时间,以及平均“不受约束”和“约束”,所有这些都在结果部分报告。比较了两种不同的方法;标准多重射击NMPC,以及拟议的双模式多重射击NMPC。此外,如本文所述,考虑了两种不同的数值精度(浮点数和双精度数),以评估计算时间的好处。由此得出的结果与本文件表2的结果有关。
📚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 Matlab代码实现
🎉4 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Oscar Julian Gonzalez Villarreal (2019) Dual Mode Stable Prediction Models for Numerically Robust NMPC using Real-Time Iterations