matlab粒子加速器仿真,粒子群算法优化PID参数 仿真不出结果 程序如下

用的是《MATLAB智能算法30个案例分析》中的程序

1.文件名为PSO_PID.m

function z = PSO_PID(x)

assignin('base','Kp',x(1));                   % 粒子群依次赋值给Kp                                            这部分运行结果> PSO_PID

assignin('base','Ki',x(2));                     % 粒子群依次赋值给Ki                                                                     Error using PSO_PID (line 2)

assignin('base','Kd',x(3));                   % 粒子群依次赋值给Kd                                                                      Not enough input arguments.

[ y_out] = sim('PID_Model', [0, 20]); % 使用命令行运行控制系统模块

z = y_out(end, 1);                            % 返回性能指标

2.文件名为Optm1_PSO_PID.m

%% 清空环境clearclc

%% 参数设置w = 0.6;      % 惯性因子c1 = 2;       % 加速常数c2 = 2;       % 加速常数

Dim = 3;            % 维数SwarmSize = 100;    % 粒子群规模ObjFun = @PSO_PID;  % 待优化函数句柄

MaxIter = 100;      % 最大迭代次数  MinFit = 0.1;       % 最小适应值

Vmax = 1;Vmin = -1;Ub = [300 300 300];Lb = [0 0 0];

%% 粒子群初始化    Range = ones(SwarmSize,1)*(Ub-Lb);    Swarm = rand(SwarmSize,Dim).*Range + ones(SwarmSize,1)*Lb ;     % 初始化粒子群    VStep = rand(SwarmSize,Dim)*(Vmax-Vmin) + Vmin ;                % 初始化速度    fSwarm = zeros(SwarmSize,1);for i=1:SwarmSize    fSwarm(i,:) = feval(ObjFun,Swarm(i,:));                         % 粒子群的适应值end

%% 个体极值和群体极值[bestf bestindex]=min(fSwarm);zbest=Swarm(bestindex,:);   % 全局最佳gbest=Swarm;                % 个体最佳fgbest=fSwarm;              % 个体最佳适应值fzbest=bestf;               % 全局最佳适应值

%% 迭代寻优iter = 0;y_fitness = zeros(1,MaxIter);   % 预先产生4个空矩阵K_p = zeros(1,MaxIter);         K_i = zeros(1,MaxIter);K_d = zeros(1,MaxIter);while( (iter < MaxIter) && (fzbest > MinFit) )    for j=1:SwarmSize        % 速度更新        VStep(j,:) = w*VStep(j,:) + c1*rand*(gbest(j,:) - Swarm(j,:)) + c2*rand*(zbest - Swarm(j,:));        if VStep(j,:)>Vmax, VStep(j,:)=Vmax; end        if VStep(j,:)Ub(k), Swarm(j,k)=Ub(k); end            if Swarm(j,k)

figure(2)      % 绘制PID控制器参数变化曲线plot(K_p)hold onplot(K_i,'k','LineWidth',3)plot(K_d,'--r')title('Kp、Ki、Kd 优化曲线','fontsize',18);xlabel('迭代次数','fontsize',18);ylabel('参数值','fontsize',18);set(gca,'Fontsize',18);legend('Kp','Ki','Kd',1);

2014-4-12 22:10 上传

b4d287d1aacbf0cf95a77c41289acfe6.gif

c5006d1a5b4047f80d42a7082635a87b.gif

仿真模型 文件名为PID_Model

74cebf67aefae40a311644b1fe380f73.png

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

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

相关文章

CentOS5、6的启动流程

CentOS5/6的启动流程启动流程画了张图,看着更清晰些: (centos7的启动流程变化挺大的,这部分待补充)补充(/etc/rc.d/rc.local 不属于任何服务,为特殊文件,可将不能定义为服务又想开机运行的命令定义在此文件中)添加自定义服务:[rootel5 init.d]# vi /etc/init.d/testsrv #!/bin…

Spark交互式分析平台Apache Zeppelin的安装

Zeppelin介绍 Apache Zeppelin提供了web版的类似ipython的notebook&#xff0c;用于做数据分析和可视化。背后可以接入不同的数据处理引擎&#xff0c;包括Spark, Hive, tajo等&#xff0c;原生支持Scala, Java, shell, markdown等。它的整体展现和使用形式和Databricks Cloud是…

win7 php zend,win7系统打开WZend Studio PHP出错的解决方法

很多朋友安装win7系统后&#xff0c;在使用的过程中会遇到win7系统打开WZend Studio PHP出错的情况&#xff0c;可能有很多用户还是不能自己处理win7系统打开WZend Studio PHP出错的问题&#xff0c;其实简单的来说处理win7系统打开WZend Studio PHP出错的问题只需要按照 1、在…

9个元素换6次达到排序序列_C语言必学的12个排序算法:希尔排序(第3篇)

基本思想希尔排序&#xff08;Shells Sort&#xff09;&#xff0c;以发明人命名&#xff0c;又称为缩小增量排序&#xff0c;也是一种插入排序算法。主要思想&#xff1a;直接插入排序算法时间和待排数据有关&#xff0c;其平均复杂度是O(n^2)&#xff0c;但是在待排数据已经有…

java快捷键禁用_pycharm 掌握这些快捷键,你就是大神!!

最重要的快捷键1. ctrlshiftA:万能命令行 2. shift两次:查看资源文件新建工程第一步操作1. module设置把空包分层去掉,compact empty middle package 2. 设置当前的工程是utf-8,设置的Editor-->File Encodings-->全部改成utf-8,注释1. ctrl/:单行注释光标操作1. ctrlalte…

如何在 5 分钟内读懂区块链的架构思维?

作为入门者&#xff0c;如何在最短的时间了解区块链技术&#xff0c;区块链思维&#xff0c;以及比特币的金融原理呢&#xff1f;本文尝试从比特币的架构设计思维出发&#xff0c;让人从宏观上搞清楚区块链的技术本质。 本文授权转载自阿里技术 作者 | 郑吉 区块链不是一种技术…

魅族Flyme5.x以上系统INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

用android studio 连接魅族flyme5.0安装app&#xff0c;报 Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 解决方法&#xff1a; 1、进入手机管家 2、权限管理 3、usb安装管理 4、关闭 完美解决问题

php取key的value值,获取数组中key和value的值

方法1&#xff1a;PHP 4 引入了 foreach 结构&#xff0c;和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组&#xff0c;当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法&#xff0c;第二种比较次要但却是第一种的有用…

arduino 上传项目出错_Arduino多核编程:简单例子

不管你是Arduino领域的新手还是经验丰富的开发人员&#xff0c;很可能你还只使用过单核在进行编程。 这没有什么好笑的---- 事实上&#xff0c;直到几天前我才使用Arduino IDE进行了第一次多核编程。 我和所有其他Arduino粉丝都非常喜欢IDE的易用性以及MicroController 开发所需…

Hadoop-RPC应用demo

Hadoop里的rpc框架可以单独拿出来使用。jar包全在hadoop-common工程里。 导入hadoop-common工程里&#xff08;hadoop-2.7.3为例&#xff09;&#xff1a; hadoop-common-2.7.3.jar \hadoop-2.7.3\share\hadoop\common\lib下的全部jar包 实例 rpc.client 客户端 rpc.pr…

php 变量 可用拼音表示,php汉字转拼音的示例

. 代码如下:class Helper_Spell{public $spellArray array();static public function getArray() {return unserialize(file_get_contents(pytable_without_tune.txt));}/*** desc 获取字符串的首字母* param $string 要转换的字符串* param $isOne 是否取首字母* param $uppe…

Opencv-Python:图像尺寸、图像的读取、显示、保存与复制

Opencv-Python&#xff1a;图像尺寸、图像的读取、显示、保存与复制 原创 2017年11月23日 21:30:494440在使用opencv的方法时&#xff0c;首先必须导入opencv包。新的opencv导入cv2&#xff0c;这里也和cv做了一个对比 [python] view plaincopy import cv2 一、图像尺寸 图像的…

宝塔面板服务器ip地址修改_「网站」快速搭建服务器环境及网站

目录&#xff1a;「NAS」我的搭建NAS全过程在文章开头我想说明的是&#xff0c;此文章中所使用的工具为 BT 面板即宝塔面板&#xff0c;适合小白使用但是对于想要提升个人能力来说&#xff0c; BT 面板并不是一个好选择&#xff0c;而作为新手来说&#xff0c;可以使用该面板进…

redis启动报错-磁盘满了

imjournal: fopen() failed for path: ‘/var/lib/rsyslog/imjournal.state.tmp’: Structure needs cleaning [v8.24.0-57.el7_9.1 try http://www.rsyslog.com/e/2013 ] 1.查看服务状态 systemctl status rsyslog 2.尝试重启服务 systemctl restart rsyslog 3.查看分区占用情…

杨辉三角python_Python面试150题汇总,都是常问的面试题!

周末&#xff0c;Python面试题每日一题暂停更新&#xff0c;下面把最近整理的1-50篇Python面试文整理一下&#xff0c;平时文章都放在比较末尾&#xff0c;阅读量都不高&#xff0c;相信很多人都没看过&#xff0c;如果对于Python感兴趣的&#xff0c;建议可以认真阅读一下&…

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.wifi.SCAN_RESULTS flg

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.nokia.wlanapp, PID: 18526java.lang.RuntimeException: Error receiving broadcast Intent { actandroid.net.wifi.SCAN_RESULTS flg0x4000010 (has extras【外部】) } in com.nokia.wlanapp.Receive…

shell 整数条件判断

两个整数的比较 整数1 -eq 整数2 判断整数1是否和整数2相等(相等为真) 整数1 -ne 整数2 判断整数1是否和整数2不相等(不相等位置) 整数1 -gt 整数2 判断整数1是否大于整数2(大于为真) 整数1 -lt 整数2 判断整数1是否小于整数2(小于为真) 整数1 -ge 整数2 判断整数1是否大于等于…

php处理上传文件的步骤,php文件上传步骤

我们在开发网站的时候&#xff0c;经常会遇到需要制作文件上传功能&#xff0c;下面我们就为大家介绍一下php制作文件上传功能的详细步骤。推荐教程&#xff1a;PHP视频教程第一步&#xff1a;创建一个文件上传表单允许用户从表单上传文件是非常有用的。请看下面这个供上传文件…

matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数

帮助你理解线性代数与机器学习紧密结合的核心内容下文节选自北大出版社《机器学习线性代数基础》, [遇见]已获授权许可. 这本书不同于传统教材, 从新的角度来介绍线性代数的核心知识, 讲解也很棒, 又刚好参加参加了当当每满100-50的活动, 感兴趣的朋友可以关注下. 傅里叶级数&a…

c++实现超声回波包络检测_超声波物位计的选用

超声波物位计超声波在气体、液体和固体介质中以一定速度传播时因被吸收而衰减&#xff0c;但衰减程度不同&#xff0c;在气体中衰减最大&#xff0c;而在固体中衰减最小&#xff1b;当超声波穿越两种不同介质构成的分界面时会产生反射和折射&#xff0c;且当这两种介质的声阻抗…