当前位置: 首页 > news >正文

Matlab/Simulink和AMEsim联合仿真(以PSO-PID算法为例)

目录

安装软件和配置环境变量

Matlab/Simulink和AMEsim联合仿真详细流程

非常重要的一点

Simulink模型和AMEsim模型用S-Function建立连接

从AMEsim软件打开Matlab

Matlab里的设置

Matlab的.m文件修改(对于PSO-PID算法)

运行程序


我印象中好像做过Matlab/Simulink和AMEsim联合仿真的分享似的,但翻看了我之前上传的文章又没有,所以这篇文章主要是记录以Simulink为主的Simulink和AMEsim联合仿真以及操作流程

安装软件和配置环境变量

我当时学习主要是看B站的一个UP主上传的视频,目前按照他的方法安装和配置环境变量进行联合仿真,都是可以正常进行的。(只要看软件安装和配置环境,他的例子可以不看,毕竟是要搭建自己的模型)

B站视频:🚪👉:Adams,AMESim,Matlab联合仿真入门

安装包的话在网络上找一找,我的软件版本分别是:

Simcenter Amesim 2020.1

Visual Studio 2019

matlab R2019b

电脑是Windows 11,64位

看了很多网上的资料,AMEsim与Simulink联合仿真的时候用Microsoft Visual Studio C++编译器比较好。(GNU GCC 64bit是AMEsim自带的。)安装顺序最好是1Visual Studio-2 Amesim-3 matlab

Matlab/Simulink和AMEsim联合仿真详细流程

※非常重要的一点

无论是你的液压模型还是Simulink模型还是matlab的.m文件,都放在一个文件夹下,这个文件夹命名为你需要仿真的项目,要用英文命名,路径不能出现中文!!!

Simulink模型和AMEsim模型用S-Function建立连接

B站视频的P102分40秒有介绍怎能分别在两个软件里面建立S-Function模块,附上链接。

🚪👉:Matlab为主的AMESim和Matlab联合仿真

我的另外两篇文章也有对S-Function的涉及,感兴趣的可以看看。

🚪👉:AMEsim和Simulink联合仿真生成新的.mexw64液压模型文件

🚪👉:AMEsim第四步simulation报错unable to create an executable for the system解决方法

从AMEsim软件打开Matlab

建立好的液压模型进入第四阶段(Sketch草图-Submodel子模型-Parameter参数-Simulation仿真)即Simulation仿真模式

按理来说只要进入仿真模式就行,但是把上图都点上,以防万一。

通过AMEsim上方工具栏Tools-Matlab打开Matlab软件。

Matlab里的设置

把你刚刚保存的文件夹地址复制一下,输入到下图的位置中回车;

 返回上一级列表,把这个文件夹先从路径中删除再从路径中添加(为了确保你的文件夹在仿真的路径中);

“设置路径”设置,把最新的路径保存。

Matlab的.m文件修改(对于PSO-PID算法)

常常需要改动的地方(因为不同的迭代要求和迭代算法所用的硬件关系,这些参数你需要根据实际情况进行调整)

主程序:

粒子维数、粒子群规模、子程序对应的待优化句柄、迭代次数、速度边界、位置边界

Dim = 5;                % 维数
SwarmSize = 100;          % 粒子群规模
ObjFun = @PSO_FuzzyPID;   % 待优化函数句柄
MaxIter = 200;            % 最大迭代次数  
MinFit = 0.0001;       % 最小适应值 
Vmax = 1;
Vmin = -1;
Ub = [2 2 10 3 4];      %边界最大值
Lb = [0 0 0 0 0];       %边界最小值

子程序:

更改自己建立的Simulink模型名称,以及每一次仿真时长(如果需要的话)

function z=PSO_FuzzyPID(x)   %function的名字要与文件名一样    
assignin('base','Kup',x(3));
assignin('base','Kui',x(4));
assignin('base','Kud',x(5));
[t_time,x_state,y_out]=sim('PSO_FuzzyPIDModel',[0,1]); %需要仿真的simulink模型,与其名字一样
z=y_out(end,1);   %返回性能指标输出矩阵

我的另外几篇相关PSO算法联合仿真推荐,感兴趣的可以看看。 

🚪👉:基于PSO算法优化PID参数的一些问题

🚪👉:PSO算法寻优模糊PID五个量化/比例因子参数(附代码)

🚪👉:PSO_GA混合算法优化PID参数(附代码)

运行程序

最后一步,是在Matlab打开PSO-PID的主程序,点击运行迭代寻优完一次屏幕会出现正常的闪烁,然后在它的命令窗口会出现仿真时间。


基本上就是这些流程

如果帮到了您,可以点一个大大的赞吗?这会对我有很大的帮助。👍

希望我的经历能够给同好们帮助!😀

不清楚的欢迎评论哦!

相关文章:

Matlab/Simulink和AMEsim联合仿真(以PSO-PID算法为例)

目录 安装软件和配置环境变量 Matlab/Simulink和AMEsim联合仿真详细流程 非常重要的一点 Simulink模型和AMEsim模型用S-Function建立连接 从AMEsim软件打开Matlab Matlab里的设置 Matlab的.m文件修改(对于PSO-PID算法) 运行程序 我印象中好像做过…...

超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)

超声波测距模块参考资料 1.电路连接及引脚配置 触发信号PA3只需要输出10us的高电平,所以直接设置成 普通的GPIO端口即可;回响信号使用外部中断,上升沿信号产生外部中断,打开定时器,下降沿再产生一次中断,读…...

Go语言结构体和元组全面解析

Go语言中的复合类型与其应用 在编程中,标准类型虽然方便,但无法满足所有需求。Go通过支持结构体和元组类型,为开发者提供了自定义数据类型的能力。本文将介绍如何定义结构体、如何使用指针操作结构体、如何通过元组返回多个值等内容&#xf…...

集成电路学习:什么是SDK软件开发工具包

SDK:软件开发工具包 SDK,即Software Development Kit(软件开发工具包),是一套由软件提供商或其他组织提供的开发工具集合。这些工具旨在帮助开发者更快速、更便捷地创建、测试和部署软件应用程序。以下是对SDK的详细解…...

java后端如何发送http请求

用java后端发送请求需要用到的一个工具包为HttpClient。HttpClient是Apache的一个子项目&#xff0c;是高效的、功能丰富的支持HTTP协议的客户端编程工具包。 引入依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&…...

装WebVideoCreator记录

背景&#xff0c;需要在docker容器内配置WebVideoCreator环境&#xff0c;配置npm、node.js WebVideoCreator地址&#xff1a;https://github.com/Vinlic/WebVideoCreator 配置环境&#xff0c;使用这个教程&#xff1a; linux下安装node和npm_linux离线安装npm-CSDN博客 1…...

【编程底层思考】什么是GC Roots

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;GC Roots是垃圾收集&#xff08;Garbage Collection&#xff0c;GC&#xff09;过程中的起点&#xff0c;用于确定对象是否可被回收。GC Roots集合是一组必须活跃的&#xff08;即必须保留在内存中的&#xff09;引用&am…...

[STL --stack_queue详解]stack、queue,deque,priority_queue,容器适配器

stack stack介绍 1、stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2、stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xff0c;并提供…...

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code """ <iframe srcdoc <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width" />…...

ubuntu 安装python3 教程

本篇教程,主要介绍如何在Ubuntu上安装python3教程。 1、查看是否有python 在安装前,首先看看自己系统上,是否存在python环境,可能有些系统,默认就安装过python,如果已经有python了,可以直接跳过安装教程。 2、安装步骤 apt update && apt install -y python3 p…...

NOR Flash、NAND Flash……

存储类型描述Compact Flash一种用于便携式电子设备的数据存储设备&#xff0c;于1994年由SanDisk公司推出。SRAM静态随机存取存储器&#xff0c;不需要刷新电路即能保存数据&#xff0c;速度快但集成度低、功耗大。PSRAM伪静态随机存取存储器&#xff0c;结合了SRAM和DRAM的特点…...

【高性能代码】提高代码的性能有哪些方式,如何写出高性能代码,一段代码如何提高这段代码的执行性能,高性能代码开发

【高性能代码】提高代码的性能有哪些方式&#xff0c;如何写出高性能代码&#xff0c;一段代码如何提高这段代码的执行性能&#xff0c;高性能代码开发 提高代码的性能是软件开发中一个重要的方面&#xff0c;尤其是在处理大数据、高并发或实时性要求较高的应用时。以下是一些提…...

2024整理 iptables防火墙学习笔记大全_modepro iptables

Iptables名词和术语 2iptables表&#xff08;tables&#xff09;和链&#xff08;chains&#xff09; 2表及其链的功能 2  Filter表 2  NAT表 2  MANGLE表 2iptables的工作流程 3iptables表和链的工作流程图 3 二、 iptables实战应用 4iptables命令参数详解 4  iptable…...

实验记录 | 点云处理 | K-NN算法3种实现的性能比较

引言 K近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;算法作为一种经典的无监督学习算法&#xff0c;在点云处理中的应用尤为广泛。它通过计算点与点之间的距离来寻找数据点的邻居&#xff0c;从而有效进行点云分类、聚类和特征提取。本菜在复现点云文章过程&#xff…...

【OJ】常用技巧

1. 模版 #include<bits/stdc.h> using namespace std;int main(){ios::sync_with_stdio(false);cin.tie(0);// write herereturn 0; }2. 填充数组 memset是一个字节一个字节填充&#xff0c;如果是使int类型填充非0或者-1就会报错&#xff0c;如 int a[100]; memset(a…...

Redis:Redis性能变慢的原因

一、淘汰策略性能问题 当使用Redis当作缓存使用时&#xff0c;通常会给这个实例设置内存上限maxmemory&#xff0c;然后设置一个数据淘汰策略&#xff1b;如果Redis实例设置了内存上限maxmemory&#xff0c;那么也有可能导致Redis变慢。 原因在于&#xff0c;当Redis内存达到…...

Linux多线程——利用C++模板对pthread线程库封装

文章目录 线程封装主要框架线程启动线程等待其他信息 测试函数 线程封装 我们之前介绍过pthread的线程库&#xff0c;这个线程库主要是基于C语言的void*指针来进行传参和返回 我们使用C的模板对其封装可以让他的使用更加方便&#xff0c;并且经过测试可以让我们更加直观的了解…...

SpringBoot教程(十五) | SpringBoot集成RabbitMq(消息丢失、消息重复、消息顺序、消息顺序)

SpringBoot教程&#xff08;十五&#xff09; | SpringBoot集成RabbitMq&#xff08;消息丢失、消息重复、消息顺序、消息顺序&#xff09; RabbitMQ常见问题解决方案问题一&#xff1a;消息丢失的解决方案&#xff08;1&#xff09;生成者丢失消息丢失的情景解决方案1&#xf…...

TensorRT-LLM高级用法

--multi_block_mode decoding phase, 推理1个新token&#xff0c; 平时&#xff1a;按照batch样本&#xff0c;按照head&#xff0c;将计算平均分给所有SM&#xff1b; batch_size*num_heads和SM数目相比较小时&#xff1a;有些SM会空闲&#xff1b;加了--multi_block_mode&…...

文心一言功能新升级:读文档、懂翻译、能识图

9月4日&#xff0c;百度文心一言官网显示&#xff0c;在向全社会开放一周年之际&#xff0c;文心一言进行了功能最新全面升级&#xff0c;同时在周年期间为新老会员增加1个月专业版免费使用体验。 据了解&#xff0c;针对网页版用户需求&#xff0c;文心一言实现了创作内容更加…...

C++机试——走方格的方案

题目 请计算n*m的棋盘格子&#xff08;n为横向的格子数&#xff0c;m为竖向的格子数&#xff09;从棋盘左上角出发沿着边缘线从左上角走到右下角&#xff0c;总共有多少种走法&#xff0c;要求不能走回头路&#xff0c;即&#xff1a;只能往右和往下走&#xff0c;不能往左和往…...

Bootstrap 字体图标无法显示问题,<i>标签字体图标无法显示问题

bootstrap fileInput 以及 Bootstrap 字体图标无法显示问题。 今天在用 bootstrap fileInput 插件的时候发现图标无法显示&#xff0c;如下&#xff1a; 查看DOM&#xff0c;发现那些图标是<i>标签做的&#xff1a; 网上的方案 方案1 网上很多人说是我们打乱了boots…...

docker registry 仓库加密

docker registry 仓库加密 1、背景 ​ 公司一直用的镜像仓库是docker registry&#xff0c;但是有个安全问题&#xff0c;就是仓库从web ui的浏览到镜像的拉取都是可以直接使用的&#xff0c;还是放到了公网上&#xff0c;只需要知道你的域名那就是畅通无阻了&#xff0c;可以…...

利用高德+ArcGIS优雅获取任何感兴趣的矢量边界

荷花十里&#xff0c;清风鉴水&#xff0c;明月天衣。 四时之景不同&#xff0c;乐亦无穷尽也。今天呢&#xff0c;梧桐君给大家讲解一下&#xff0c;如何利用高德地图&#xff0c;随机所欲的获取shp边界数据。 文章主要分成以下几个步骤&#xff1a; 首先搜索你想获取的矢量…...

炮弹【USACO】

题目背景 时/空限制&#xff1a;1s / 64MB 题目描述 贝茜已经精通了变成炮弹并沿着长度为 N 的数轴弹跳的艺术&#xff0c;数轴上的位置从左到右编号为 1,2,…,N 。 她从某个整数位置 S 开始&#xff0c;以 1 的起始能量向右弹跳。 如果贝茜的能量为 k &#xff0c;则她将…...

python如何读取excel文件内的数据

目录 前言一、安装openpyxl二、读取Excel数据总结前言 在Python中读取Excel数据,最常用的库之一是openpyxl(用于.xlsx格式)和xlrd(尽管xlrd从版本2.0开始不再支持.xlsx,仅支持旧的.xls格式)。然而,对于大多数现代应用来说,openpyxl是一个更好的选择,因为它支持.xlsx格…...

Java项目: 基于SpringBoot+mybatis+maven+mysql教师工作量管理系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismavenmysql教师工作量管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观…...

项目开发--数据库--postgresql数据库操作

背景 1、安装postgresql的基础方法 2、基本操作命令 解决方案 安装命令 在ubuntu环境当中进行安装。 sudo apt install postgresql安装完毕之后直接进行测试&#xff0c;如果看到如下内容则安装成功。 sudo systemctl status postgresql使用DBeaver进行连接报错&#xff…...

c语言——用一维数组输出杨辉三角形

一.代码 #include <stdio.h> int Num[100]; int Hang; int Lie; int a; int Flag; int main() {Lie 1;Hang 1;a 0;while (1) {//列1为1if (Lie 1) {Num[1] 1;Lie;}//数据存到数组里面while (Hang > Lie && Hang ! 2) { if (Hang!Lie) {Flag Num[Lie] …...

Codeforces Round 971 (Div. 4) (A~G1)

A、B题太简单&#xff0c;不做解释 C 对于 x y 两个方向&#xff0c;每一个方向至少需要 x / k 向上取整的步数&#xff0c;取最大值。 由于 x 方向先移动&#xff0c;假如 x 方向需要的步数多于 y 方向的步数&#xff0c;那么最后 y 方向的那一步就不需要了&#xff0c;答案…...