模型预测控制c语言程序_第三章 模型预测控制算法基础与控制仿真分析

1.//模型预测控制算法基础

/模型预测控制的基本思想就是利用已有的模型、系统当前的状态和未来的控制量去预测系统未来的输出。通过滚动地求解带约束优化问题来实现控制目的。

预测模型。预测模型是模型预测控制的基础,能够根据历史信息和控制输入预测系统未来的输出。

滚动优化。模型预测控制通过使某项性能评价指标最优来得到最优控制量,这种优化过程不是离线进行的,而是反复在线进行的,这也是模型预测控制与传统最优控制的根本区别。

反馈校正。为了抑制由于模型失配或者环境干扰引起的控制偏差,在新的采样时刻,首先检测对象的实际输出,并利用这一实时信息对基于模型的预测进行修正,然后再进行新的优化。

bd666fb7601bef5415c0628464b9da39.png

bd06dcfc75d7c98fbf0e6b39aef95ab7.png

/

/模型预测控制通常将待优化问题转换成二次型规划问题。二次型规划是一个典型的数学优化问题,它的优化目标为带有线性或者非线性约束的二次型实函数,常用的解法为有效集法或者内点法。/

//

2.//一个基于MPC工具箱的速度控制实例

/

6c646474e568dbe5e2344e12e05417b4.png

/

/doubleint.m/

%% 利用mpc工具箱,实现双积分系统的模型预测控制

%% 模型

plant = tf(1,[1 0 0]);

%% 设置mpc控制器

%采样时间

Ts = 0.1;

%预测范围

p = 10;

%控制范围

m = 3;

% MPC控制器

mpcobj = mpc(plant, Ts, p, m);

%限制控制器的输出,对双积分系统来说是限制输入

mpcobj.MV = struct('Min',-1,'Max',1);

%% 判断是否具有simulink模块

if ~mpcchecktoolboxinstalled('simulink')

disp('Simulink(R) is required to run this example.')

return

end

%% 打开搭建好的simulink模型

mdl = 'DoubleInt';

open_system(mdl);

sim(mdl);

/DoubleInt.slx/

7593a5643d2d5c098ba5ac009251a610.png

注意:此时查看示波器没有任何输出。因为m文件中的mpcobj还没有导入simulink中。需要按以下步骤设置。并且设置初始状态为空。

c19ede1710b232b59b722b43e814e099.png

/输入、输出/

c63a5e076d4ff60889a0ca17e3cdfaaa.png

14cd1f39895c71c67067887cf79527d4.png

//

3.//速度跟踪的模型预测控制方法

待更新

//

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值