概述
第一 章 鲸鱼优化算法
算法介绍参考文献:Seyedali Mirjalili,Andrew Lewis. The Whale Optimization Algorithm[J]. Advances in Engineering Software,2016,95.
第二章 鲸鱼优化PID参数
首先我们需要建立一个直流电机PID控制系统,WOA算法通过将系统上的误差作为WOA的评估函数(即适应度函数输入),计算适应度函数的值,然后根据函数的适应度调整三个PID参数来优化PID控制器,以使系统的控制性能最优。图5为WOA的PID参数整定框图,其中为系统的R(t)输入,y(t)为系统的输出,E(t)是输入和输出的偏差,Kp , Ki , Kd 是 PID 控制器中关键参数, 其数值变化直接影响 PID 控制器性能, 故对 PID 参数进行优化十分重要。
直流电机主要由电气部分以及机械部分组成。电机的模型如图6所示。直流电机中气隙磁通是恒定的,通过调节电枢电路的电压来实现对电机的控制,以实现对电机速度的调节。对于这种电机对象,其某些参数特性(如扭矩常数和粘性摩擦系数)不可用,因此可以将其视为建模中的黑盒,并且可以通过使用输入和输出数据以及使用系统识别来完成建模。直流电机的数学建模过程:
1.确定对象模型结构,假设气隙磁通恒定。
其中ki为电机的扭矩常数
2. 确定电枢电路电压平衡方程
a)电机反电动势与其角速度之间的关系
其中ke是反电动势常数
b)电枢电路电压平衡方程
式中,ra,la别是电枢电路的电阻和电感。
3. 电机轴上的扭矩平衡方程
式中j是等效转动惯量,b是等效粘性摩擦系数,tl是负载扭矩。
4. 以为输入电压,为输出速度,消除、和求微分
5. 通常,电枢电路中的电感La很小,如果忽略其影响,根据拉普拉斯变换将微分方程转换为以下传递函数。
式中:
k为电机的增益常数,t为电机的时间常数。
仿真结果
基准函数测试也可做附matlab代码
部分代码
set(0,'defaultfigurecolor','w')
% parpool(4) 启用4线程并行计算,打开MATLAB时运行一次就可以,否则会报错
clear
tic; %计时
disp(['提示:程序开始运行,根据电脑配置不同,可能需要时间较长,请耐心等待'])
%%%%%%%%%%%%%参数设置
dim=3;%%%%%因为优化PID参数 所有三个参数维度为3
lb=[0 0 0]'; %变量最小值
ub=[10 10 10]'; %变量最大值
Max_iter=10;
SearchAgents_no=30;
%%%%%%%%%%%%%鲸鱼优化算法
% initialize position vector and score for the leader,初始化位置向量和领导者得分
Leader_pos=zeros(1,dim);
Leader_score=inf; %change this to -inf for maximization problems,将此更改为-inf以获得最大化问题,Inf无穷大
%Initialize the positions of search agents
Positions=initialization(SearchAgents_no,dim,ub,lb);%Positions,存放数个个体的多维位置。
Convergence_curve=zeros(1,Max_iter);%Convergence_curve收敛曲线
t=0;% Loop counter
% Main loop
while t<Max_iter
for i=1:size(Positions,1)%对每个个体一个一个检查是否越界
% Return back the search agents that go beyond the boundaries of
% the search space,返回超出搜索空间边界的搜索代理
Flag4ub=Positions(i,:)>ub';
Flag4lb=Positions(i,:)<lb';
Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub'.*Flag4ub+lb'.*Flag4lb;%超过最大值的设置成最大值,超过最小值的设置成最小值
% Calculate objective function for each search agent,目标函数值的计算
fitness=optfun(Positions(i,:));
% Update the leader
if fitness<Leader_score % Change this to > for maximization problem
Leader_score=fitness; % Update alpha
Leader_pos=Positions(i,:);
end
end
最后
以上就是贤惠绿草为你收集整理的鲸鱼算法优化PID参数优化附matlab代码的全部内容,希望文章能够帮你解决鲸鱼算法优化PID参数优化附matlab代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复