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.pswp.cn/news/538910.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538910.shtml
英文地址,請注明出處:http://en.pswp.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;且當這兩種介質的聲阻抗…