matlab pid源码,[转载]基于蚁群算法的PID控制参数优化Matlab源码

该博客分享了使用蚁群算法(ACO)进行PID控制参数优化的Matlab源码,适用于PID参数的智能调优。代码包括了蚁群算法的基本步骤和PID控制的仿真过程。
摘要由CSDN通过智能技术生成

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

除了蚁群算法,可用于PID参数优化的智能算法还有很多,比如遗传算法、模拟退火算法、粒子群算法、人工鱼群算法,等等。

function [BESTX,BESTY,ALLX,ALLY]=ACOUCP

(K,N,Rho,Q,Lambda,LB,UB,Num,Den,Delay,ts,StepNum,SigType,PIDLB,PIDUB)

%% 此函数实现蚁群算法,用于PID控制参数优化

% GreenSim团队原创作品,转载请注明

% Email:greensim@163.com

% GreenSim团队主页:http://blog.sina.com.cn/greensim

%

[color=red]欢迎访问GreenSim——算法仿真团队→[url=http://blog.sina.com.cn/greensim]

http://blog.sina.com.cn/greensim[/url][/color]

%% 输入参数列表

%

K 迭代次数

%

N 蚁群规模

%

Rho 信息素蒸发系

%%清空环境? clear all; clc; %%参数设置? w=0.6;%惯性因子? c1=2;%加速常数 c2=2;%加速常数? Dim=3;%维数 SwarmSize=50;%粒子群规模? ObjFun=@PIDcl;%待优化函数句柄? MaxIter=100;%最大迭代次数? MinFit=-Inf;%最小适应值 Vmax=1; Vmin=-1; Ub=[10 10 10]; 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 %%个体极值和群体极值 [bestfbestindex]=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,:)<Vmin,VStep(j,:)=Vmin; end %位置更新? Swarm(j,:)=Swarm(j,:)+VStep(j,:); for k=1:Dim if Swarm(j,k)>Ub(k),Swarm(j,k)=Ub(k); end if Swarm(j,k)<Lb(k),Swarm(j,k)=Lb(k); end end %适应值 fSwarm(j,:)=feval(ObjFun,Swarm(j,:)); %个体最优更新? if fSwarm(j)<fgbest(j) gbest(j,:)=Swarm(j,:); fgbest(j)=fSwarm(j); end %群体最优更新? if fSwarm(j)<fzbest zbest=Swarm(j,:); fzbest=fSwarm(j); end end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值