模型预测控制工具包——ACADO:简介、安装与测试

news2024/11/28 3:37:08

模型预测控制工具包——ACADO:简介、安装与测试

  • ACADO 工具包简介
  • ubuntu20.04 安装 ACADO工具包
    • 安装依赖
    • 安装ACADOtoolkit
  • 测试

在这里插入图片描述

ACADO 工具包简介

ACADO Toolkit 是一个用 C++ 编写的用于自动控制和动态优化的软件环境和算法集合。 它提供了一个通用框架,用于使用多种算法进行直接优化控制,包括模型预测控制以及状态和参数估计。ACADO 工具包是作为独立的 C++ 代码实现的,并带有用户友好的 MATLAB 界面。 面向对象的设计允许方便地耦合现有优化包并使用用户编写的优化例程对其进行扩展。它还提供(独立)高效实施的 Runge-Kutta 和 BDF 积分器,用于模拟 ODE 和 DAE。

ACADO Toolkit 旨在满足这四个关键属性:

  • 开源:该工具包可免费获得,最新版本以及文档和示例可以从 http://www.acadotoolkit.org 下载。
  • 用户友好性:ACADO Toolkit 的语法被设计为尽可能直观,以便允许用户以非常接近通常数学语法的方式制定控制问题。
  • 代码可扩展性:将现有算法链接到工具包应该很容易。这是通过 ACADO 工具包的面向对象软件设计风格来实现的。
  • 自包含:ACADO 是一个独立的工具包。 本身不需要外部包,但可以链接用于图形输出的外部求解器或包。

ubuntu20.04 安装 ACADO工具包

系统:Linux ubuntu20.04

编译工具:CMake

安装依赖

首先需要通过 apt-get 包管理器安装一些依赖包

以下软件包是必需的:
gcc、g++、cmake 和 git。这些基本上都有,没有的需要安装。

以下软件包是可选的:
Gnuplot、Doxygen 和 Graphviz 是可选的,ACADO 可以在没有这些包的情况下工作,但不安装的话将无法可视化结果和/或生成 API 文档。

Gnuplot、Doxygen 和 Graphviz的安装方法:

sudo apt-get install gnuplot doxygen graphviz

终端出现如下字样表示安装完成

准备解压 …/3-libwxbase3.0-0v5_3.0.4+dfsg-15build1_amd64.deb …
正在解压 libwxbase3.0-0v5:amd64 (3.0.4+dfsg-15build1) …
正在选中未选择的软件包 libwxgtk3.0-gtk3-0v5:amd64。
准备解压 …/4-libwxgtk3.0-gtk3-0v5_3.0.4+dfsg-15build1_amd64.deb …
正在解压 libwxgtk3.0-gtk3-0v5:amd64 (3.0.4+dfsg-15build1) …
正在选中未选择的软件包 gnuplot-qt。
准备解压 …/5-gnuplot-qt_5.2.8+dfsg1-2_amd64.deb …
正在解压 gnuplot-qt (5.2.8+dfsg1-2) …
正在选中未选择的软件包 gnuplot。
准备解压 …/6-gnuplot_5.2.8+dfsg1-2_all.deb …
正在解压 gnuplot (5.2.8+dfsg1-2) …
正在设置 doxygen (1.8.17-0ubuntu2) …
正在设置 aglfn (1.7+git20191031.4036a9c-2) …
正在设置 libwxbase3.0-0v5:amd64 (3.0.4+dfsg-15build1) …
正在设置 gnuplot-data (5.2.8+dfsg1-2) …
正在设置 libwxgtk3.0-gtk3-0v5:amd64 (3.0.4+dfsg-15build1) …
正在设置 gnuplot-qt (5.2.8+dfsg1-2) …
update-alternatives: 使用 /usr/bin/gnuplot-qt 来在自动模式中提供 /usr/bin/gnuplot (gnuplot)
正在设置 gnuplot (5.2.8+dfsg1-2) …
正在处理用于 man-db (2.9.1-1) 的触发器 …
正在处理用于 libc-bin (2.31-0ubuntu9.16) 的触发器 …
在这里插入图片描述

安装ACADOtoolkit

在GitHub下载工具包代码。 官网的建议是下载稳定分支:

git clone https://github.com/acado/acado.git -b stable ACADOtoolkit

终端出现如下字样表示下载完成

正克隆到 ‘ACADOtoolkit’…
remote: Enumerating objects: 19155, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 19155 (delta 0), reused 1 (delta 0), pack-reused 19151 (from 1)
接收对象中: 100% (19155/19155), 13.19 MiB | 5.95 MiB/s, 完成.
处理 delta 中: 100% (13899/13899), 完成.
在这里插入图片描述

并且在主目录下生成文件夹ACADOtoolkit
在这里插入图片描述

进入 ACADOtoolkit 文件夹,并创建一个编译文件夹build:

cd ACADOtoolkit
mkdir build
cd build

运行 CMake 以生成 makefile,并开始编译过程:

cmake ..
make

终端出现如下字样表示cmake完成

– Performing Test COMPILER_SUPPORTS_CXX11
– Performing Test COMPILER_SUPPORTS_CXX11 - Success
– Performing Test COMPILER_SUPPORTS_GNU11
– Performing Test COMPILER_SUPPORTS_GNU11 - Success
– Performing Test COMPILER_SUPPORTS_CXX0X
– Performing Test COMPILER_SUPPORTS_CXX0X - Success
– Performing Test COMPILER_SUPPORTS_GNU0X
– Performing Test COMPILER_SUPPORTS_GNU0X - Success
– Found PythonInterp: /usr/bin/python (found version “3.8.10”)
– Configuring done
– Generating done
– Build files have been written to: /home/jk-jone/ACADOtoolkit/build
在这里插入图片描述

终端出现如下字样表示make完成

[100%] Linking CXX executable …/…/…/…/examples/code_generation/empc/powerkite
[100%] Built target code_generation_powerkite
在这里插入图片描述

测试

通过运行示例程序检查安装是否成功:

cd ACADOtoolkit
cd examples/getting_started
./simple_ocp

终端输出如下:

sqp it | qp its | kkt tol | obj val | merit val | ls param |
1 | 11 | 4.015966e+01 | 9.950000e+00 | 5.419249e+01 | 1.000000e+00 |
2 | 1 | 1.306070e-01 | 9.931631e+00 | 1.006632e+01 | 1.000000e+00 |
3 | 1 | 2.549335e-02 | 9.906147e+00 | 9.906158e+00 | 1.000000e+00 |
4 | 1 | 7.484607e-02 | 9.831350e+00 | 9.831410e+00 | 1.000000e+00 |
5 | 2 | 3.457549e-01 | 9.487488e+00 | 9.489759e+00 | 1.000000e+00 |
6 | 12 | 3.045474e-01 | 9.190947e+00 | 9.200555e+00 | 1.000000e+00 |
7 | 19 | 5.194080e-01 | 8.691541e+00 | 8.715543e+00 | 1.000000e+00 |
8 | 14 | 4.739167e-01 | 8.248118e+00 | 8.284711e+00 | 1.000000e+00 |
9 | 17 | 3.334551e-01 | 7.927619e+00 | 7.943166e+00 | 1.000000e+00 |
sqp it | qp its | kkt tol | obj val | merit val | ls param |
10 | 18 | 4.999093e-01 | 7.457878e+00 | 7.494079e+00 | 1.000000e+00 |
11 | 19 | 1.652661e-02 | 7.441887e+00 | 7.442529e+00 | 1.000000e+00 |
12 | 19 | 1.460624e-04 | 7.441741e+00 | 7.441741e+00 | 1.000000e+00 |
13 | 19 | 1.190096e-07 | 7.441741e+00 | 7.441741e+00 | 1.000000e+00 |
Covergence achieved. Demanded KKT tolerance is 1.000000e-06.

输出曲线结果图如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三菱FX3UPLC定位控制程序举例

测试程序的编写 1.输入输出的分配输入输出的分配如下表所示。 2、相关软元件的设定 相关软元件也有所不同。更改定位指令的脉冲输出端时,根因设定为定位指令的脉冲输出端的软元件不同,据更改的内容,需要变更设定的相关软元件。 3.程…

【大模型新书】掌握大语言模型:高级技术、应用、尖端方法和顶尖LLMs

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/93e5a5c008474f72a0335083ef9c4893.png)我已将 这本大模型书籍免费分享 出来,需要的小伙伴可以扫取。 主要特性 探索自然语言处理(NLP)基础和大语言模型基本原理,包括…

若依前端后打成一个JAR包部署

客户需要将项目前后端作为一个整体打包成jar,不使用nginx方式转发。使用框架是若依前后端分离,后端springboot,前端vue,目的就是把vue打入jar。 一、前端修改 ruoyi-ui/src/router/index.js文件 ,将 mode: ‘history’…

一键生成二维码的源码系统 电脑+手机版自适应代码 带完整的安装代码包以及搭建部署教程

系统概述 一键生成二维码的源码系统是一款集二维码生成、管理和应用于一体的综合性平台。它采用先进的技术和算法,能够快速、准确地生成各种类型的二维码,包括文本、链接、图片等。同时,该系统还具备高度的灵活性和可扩展性,能够…

如何使用bpmn-js实现可视化流程管理

介绍 BPMN-JS是一个流行的开源库,用于在Web应用程序中可视化、创建、编辑和分析BPMN(Business Process Model and Notation,业务流程建模与表示法)2.0 图。BPMN是一种国际标准的图形化语言,用于描述企业中的业务流程&a…

mongodb 连接, 去重,索引

mongodb 去重,索引 MongoDB Community Server 下载: https://www.mongodb.com/try/download/community GUI: The Ultimate Client, IDE and GUI for MongoDB | Studio 3T 连接 设置允许远程(局域网)连接 (windows) 在打开文件 "<你的安装目录>\MongoDB\Server\…

k3s安装指定版本以及离线安装(docker)

首先下载你所需要版本的k3s安装包&#xff0c;目录结构如下所示&#xff0c;我这里是v1.19.15k3s2。 1.首先赋予可执行权限后进行安装。 # k3s 需要赋予可执行权限 sudo chmod x k3s sudo chmod x k3s-install.sh2.然后将k3s的二进制文件复制到/usr/local/bin/ cp k3s /us…

✨机器学习笔记(七)—— 交叉验证、偏差和方差、学习曲线、数据增强、迁移学习、精确率和召回率

机器学习笔记&#xff08;七&#xff09; 1️⃣评估模型&#x1f397;️使用测试集评估模型&#x1f397;️交叉验证集&#xff08;cross validation&#xff09; 2️⃣偏差和方差&#xff08;Bias / Variance&#xff09;3️⃣学习曲线&#xff08;Learning curves&#xff09…

自动化分析背后,一站式数据分析平台!

自动化分析背后&#xff0c;一站式数据分析平台&#xff01; 前言一站式数据分析平台 前言 在如今的企业管理中&#xff0c;数据已经不再是简单的存储和备份&#xff0c;而是成为了决策的核心驱动力。尤其是在面对海量数据的情况下&#xff0c;企业急需一个能够高效处理、分析…

学习笔记之指针进阶(10.11)

a[0]就相当于数组名arr&#xff0c;a[0]1就相当于arr1&#xff0c;arr1是数组中下一个元素的地址&#xff0c;所以a[0]1就是数组中下一个元素的地址&#xff0c;&#xff08;把二维数组中的每一个数组看作一个元素&#xff09; 以上解释是错误的&#xff0c;a[0]不是整个数组的…

Leetcode——数组:移除元素—27.移除元素

知识点 双指针&#xff0c;在设置时&#xff0c;设置两个指针&#xff0c;一个用来寻找目标值&#xff0c;一个用来表示新数组的下标。 当找到不是目标值的元素时&#xff0c;将其添加到新数组中&#xff0c;如果是目标值&#xff0c;直接掠过 寻找目标值的指针会遍历整个数…

从commit校验失效问题探究husky原理

一、背景 之前创建的项目&#xff0c;发现代码 commit 提交的时候没有了任何校验&#xff0c;具体表现&#xff1a; 一是 feat fix 等主题格式校验没有了二是代码 lint 不通过也能提交 尝试解决这个问题&#xff0c;并深入了解husky的实现原理&#xff0c;将相关的一些知识点…

Excalidraw:在线手绘风格白板、图表绘制工具

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 Excalidraw 是一个开源的虚拟白板&#xff0c;用于绘制手绘风格的图表、线框图等。它支持多人实时协作&#xff0c;并使用端到端加密&#xff0c;确保…

钢铁行业3大改造方向 智能仪器亦起到重要作用!

钢铁企业新的改造方向主要包括超低排放改造、能效改造和数字化转型。‌这些政策旨在提升钢铁行业的环保水平、能效和智能化水平。其中智能仪器的加入&#xff0c;为钢铁企业数字化智能化自动化改造带来新的活力。 具体来说&#xff0c;到2027年&#xff0c;钢铁行业将实现以下目…

《Linux从小白到高手》综合应用篇:详解Linux系统调优之深入理解Huge Pages和Transparent Huge Pages

本篇深入介绍Linux Huge Pages和Transparent Huge Pages. 我在前一篇博文&#xff08;《Linux从小白到高手》综合应用篇&#xff1a;详解Linux系统调优之内存优化&#xff09;中说过&#xff0c;很多人可能对大页内存&#xff08;Huge Pages&#xff09;和透明大页&#xff08;…

[spring]spring事务和事务传播机制

文章目录 一. 事务Spring中的事务实现编程式事务声明式事务TransactionalTransactional作用 Transactional详解1. rollbackFor2. 事务隔离级别mysql事务隔离级别Spring事务隔离级别 3. 事务传播机制什么是事务传播机制事务传播机制有哪些Spring事务传播机制使用REQUIRED(加入事…

【翻译】自定义 Qt Designer 窗体

原文地址&#xff1a;Customizing Qt Widgets Designer Forms 【翻译】Qt Designer 最新中文手册文档&#xff08;Qt6&#xff09; Qt Designer设计窗体保存为一个UI文件时&#xff0c;一些窗体设定参数&#xff0c;比如栅格、默认布局的边距&#xff08;margin&#xff09;和间…

【cpp】模板函数 模板类 特化 书写格式备忘

outline 收集的关于使用 模板函数 模板类 特化 偏特化的笔记 用以快速回忆 模板类 普通使用 类内定义成员函数 #include <iostream> using namespace std;template <typename T> class MyContainer { private:T element;public:MyContainer(T elem) : element(…

低代码可视化-uniapp商城首页小程序-代码生成器

在设计一个小程序的首页时&#xff0c;包含轮播图、通知栏和商品列表这三个元素是非常常见且有效的布局方式。这样的设计既能够吸引用户的注意力&#xff0c;又能够高效地展示信息和商品。 轮播组件 小程序首页幻灯片通常位于小程序的顶部或显著位置&#xff0c;通过滑动屏幕可…

selenium自动化测试之Junit

1. 常用的注解 将junit的索引添加到pom文件&#xff1a; <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId&…