%定义一个类,下面的是main函数的参数
classdef MPC
properties
A;
B;
Q;
R;
N;
Ts;
x_min;
x_max;
u_min;
u_max;
end
methods
%这部分可以看官网介绍,没什么就是传参调用
function obj = MPC(A, B, Q, R, N, Ts, x_min, x_max, u_min, u_max)
obj.A = A;
obj.B = B;
obj.Q = Q;
obj.R = R;
obj.N = N;
obj.Ts = Ts;
obj.x_min = x_min;
obj.x_max = x_max;
obj.u_min = u_min;
obj.u_max = u_max;
end
% 求解最优控制策略,只取最优输入量,下面一个类似的是取10个预测量
function u_opt = optimize(obj, x0)
n_states = size(obj.A, 1);
n_controls = size(obj.B, 2);
opti = casadi.Opti();
X = opti.variable(n_states, obj.N+1);
U = opti.variable(n_controls, obj.N);
opti.subject_to(X(:,1) == x0);
for k = 1:obj.N
opti.subject_to(X(:,k+1) == obj.A*X(:,k) + obj.B*U(:,k));
end
cost = 0;
for k = 1:obj.N
cost = cost + X(:,k)'*obj.Q*X(:,k) + U(:,k)'*obj.R*U(:,k);
end
opti.subject_to(obj.x_min <= X <= obj.x_max);
opti.subject_to(obj.u_min <= U <= obj.u_max);
% 优化代价函数
opti.minimize(cost);
%结构体
ops = struct();
ops.ipopt.print_level = 0;
ops.print_time = 0;
ops.ipopt.tol = 1e-3;
opti.solver('ipopt', ops);
%求解
sol = opti.solve();
u_ten=sol.value(U(:,1:10));
u_opt = sol.value(U(:,1));
end
function u_ten = optimizel(obj, x0)
n_states = size(obj.A, 1);
n_controls = size(obj.B, 2);
opti = casadi.Opti();
X = opti.variable(n_states, obj.N+1);
U = opti.variable(n_controls, obj.N);
opti.subject_to(X(:,1) == x0);
for k = 1:obj.N
opti.subject_to(X(:,k+1) == obj.A*X(:,k) + obj.B*U(:,k));
end
cost = 0;
for k = 1:obj.N
cost = cost + X(:,k)'*obj.Q*X(:,k) + U(:,k)'*obj.R*U(:,k);
end
opti.subject_to(obj.x_min <= X <= obj.x_max);
opti.subject_to(obj.u_min <= U <= obj.u_max);
opti.minimize(cost);
ops = struct();
ops.ipopt.print_level = 0;
ops.print_time = 0;
ops.ipopt.tol = 1e-3;
opti.solver('ipopt', ops);
sol = opti.solve();
u_ten=sol.value(U(:,1:10));
end
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
model predictive control
共3个文件
m:2个
zip:1个
需积分: 5 0 下载量 28 浏览量
2023-06-07
12:20:02
上传
评论
收藏 41.51MB ZIP 举报
温馨提示
现实世界中往往存在各种各样的约束条件,例如前面举得开车的例子中,对车速有约束(因为有交通法规限速),对加速度也有约束(因为发动机的负载是有限的)。由于模型预测控制是通过构建优化问题来求解控制器的动作的,所以可以非常自然的将这些约束建立在优化问题中以此来保证这些约束的满足。很多MPC最后形成的优化问题是一个二次规划问题,那么可以借助丰富的运筹优化的理论来求解这个二次规划问题。所以MPC是外壳套着控制,内涵是一个优化方法。从这里可以看到模型预测控制需要在每一个时间步迭代求解优化问题,而优化问题的求解往往是比较耗费时间的,而控制器的动作对实时性要求可能会比较强一些,这样就会产生一个矛盾,这也是目前模型预测控制的一个主要缺点。
资源推荐
资源详情
资源评论
收起资源包目录
mpc (2).zip (3个子文件)
mpc
mpc
mpc
untitled12.m 855B
MPC.m 3KB
casadi-windows-matlabR2016a-v3.4.5.zip 41.51MB
共 3 条
- 1
资源评论
llddycidy
- 粉丝: 280
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Yolov8改进---注意力机制:Polarized Self-Attention,效果秒杀CBAM、SE.html
- 人才网站设计-asp.net+sql-(系统源码)
- asp.net+sql人才网站设计-含系统源码
- C#应用的用户配置窗体方案
- python实现绘制爱心图形的代码
- JAVAWEB项目-校园订餐系统项目源码.zip
- flink-1.19.0-bin-scala-2.12.tgz flink-1.16.3-bin-scala-2.12.tgz
- javaWeb项目-物资管理系统项目源码.zip
- javaweb项目-物流配货项目源码.zip
- 使用C++基于颜色纹理特征的人脸活体检测实现-附项目源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功